没有仔细看,但你的第一句就有错
def distinguish_file(user_paht):
参数应为user_path
B. python如何递归查找文件,我下面的代码是哪里出错了,怎么只能查找当前目录
判断isdir用的参数不对,应该是file_path,不应该是i
def listdir (path='.',name=None,dirlist=[]):
#example: arr=adihe.listdir('.') 将返回当前目录下的所有文件,不许含有空格
files=os.listdir(path.decode('utf-8'))
#获取目录
for i in files:
file_path=path+os.sep+i
if os.path.isdir(file_path):
dirlist.append(file_path)
listdir(file_path,name,dirlist)
return dirlist
可以使用os.walk()遍历所有文件,不用自己写递归函数。
#/bin/python
import os
for root in os.walk(r"d:\newtest"):
print root
print "\n
C. python怎么用递归遍历多层目录树
Python实现递归遍历指定文件目录(startdir),从而找到所有与指定的文件或目录(target)名相同的文件或目录的绝对路径。
scandir.py :
#! /usr/bin/python
# filename : scandir.py
# author : Jesse
# update : 2011/08/15 10:16
import os
def scandir(startdir, target) :
os.chdir(startdir)
for obj in os.listdir(os.curdir) :
if obj == target :
print os.getcwd() + os.sep + obj
if os.path.isdir(obj) :
scandir(obj, target)
os.chdir(os.pardir) #!!!
startdir = raw_input('Please input startdir: ')
target = raw_input('Please input target: ')
scandir(startdir, target)
关于该程序的一点说明:
1. 函数scandir的形参target可以是目录名也可以是文件名。
2. 函数chdir的作用是切换到指定目录,该参数必须是有效的且有访问权限的相对路径或绝对路径。
3. 函数的第五行,使用getcwd函数也是为了取得当前绝对路径。
4. 加号作为字符串的连接符。os.sep根据你的操作系统给出目录分隔符,在GNU/Linux和UNIX上它的返回值是'/',在windows上它的返回值是'\\',在Mac OS上是‘:’,使用os.sep而不直接使用字符,会提高程序的可移植性。
5. 递归调用后,一定不能忘了os.chdir(os.pardir),返回上层目录(即父目录)。
重要:
1. 理解for中的两个并列的if语句,并列是为了解决目标是文件夹时,该目标文件夹中包含符合要求的文件夹。
2. 如果指定目录中存在访问受限的文件或文件夹,该程序会失败,返回无权访问信息。
http://blog.chinaunix.net/uid-26137687-id-2183259.html
D. python里面shutil是什么
shutil 是高级的文件,文件夹,压缩包处理模块。
1.shutil.fileobj(fsrc, fdst[, length])
将文件内容拷贝到另一个文件中
import shutil
shutil.fileobj(open('old.xml','r'), open('new.xml', 'w'))
2.shutil.file(src, dst)
拷贝文件
shutil.file('f1.log', 'f2.log')
3.shutil.mode(src, dst)
仅拷贝权限。内容、组、用户均不变
shutil.mode('f1.log', 'f2.log')
4.shutil.stat(src, dst)
仅拷贝状态的信息,包括:mode bits, atime, mtime, flags
shutil.stat('f1.log', 'f2.log')
5.shutil.(src, dst)
拷贝文件和权限
shutil.('f1.log', 'f2.log')
6.shutil.2(src, dst)
拷贝文件和状态信息
shutil.2('f1.log', 'f2.log')
7.shutil.ignore_patterns(*patterns)
shutil.tree(src, dst, symlinks=False, ignore=None)
递归的去拷贝文件夹
shutil.tree('folder1', 'folder2', ignore=shutil.ignore_patterns('*.pyc', 'tmp*'))
shutil.tree('f1', 'f2', symlinks=True, ignore=shutil.ignore_patterns('*.pyc', 'tmp*'))
8.shutil.rmtree(path[, ignore_errors[, onerror]])
递归的去删除文件
shutil.rmtree('folder1')
9.shutil.move(src, dst)
递归的去移动文件,它类似mv命令,其实就是重命名。
shutil.move('folder1', 'folder3')
10.shutil.make_archive(base_name, format,...)
创建压缩包并返回文件路径,例如:zip、tar
创建压缩包并返回文件路径,例如:zip、tar
base_name: 压缩包的文件名,也可以是压缩包的路径。只是文件名时,则保存至当前目录,否则保存至指定路径,
如:www =>保存至当前路径
如:/Users/wupeiqi/www =>保存至/Users/wupeiqi/
format: 压缩包种类,“zip”, “tar”, “bztar”,“gztar”
root_dir: 要压缩的文件夹路径(默认当前目录)
owner: 用户,默认当前用户
group: 组,默认当前组
logger: 用于记录日志,通常是logging.Logger对象
E. 弱弱的请教下,python怎样递归创建远程目录
1,删除目录data下的train及其下的所有文件,相当于Linux中的rm -rf
[python] view plain
import shutil
shutil.rmtree('data/train')
2,递归的创建目录data/train,相当于Linux中的 mkdir -p
[python] view plain
import os
os.makedirs('data/train')
F. python中如何使用递归实现这个功能
简单说,解决以上问题的思路是,循环执行n*n-1,直到n=1时。
如何理解呢?第一点,函数中,调用自身函数的那部分句子,即return n *
recursion(n-1),把recursion(n-1)想象成另一个独立的函数,该函数的功能返回n-1的值,如果n的值是1,则返回1,函数运行结束。第二点,直观的看,可以把return
n * recursion(n-1)看成return n*(n-1)*(n-2)...1。而递归函数无非是在指定的条件下做普通的循环而已。
G. python 代码递归及批量处理的问题
这段程序进行递归了 ,难道是我大眼一扫没看到 0.0
H. python的神奇bug
运行了一下。错误主要是“引号”
if __name__ == '__main__':
orgin_path = r'E:222' # 这个是数据源 文件夹
moved_path = original_path # 这个是想要移动到哪里的的文件夹
move_file(orgin_path,moved_path)
I. python递归问题
在if和elif两行增加 path + os.path.sep + ,代码如下:
importos
defsearch(s,path=os.path.abspath('.')):
forzinos.listdir(path):
ifos.path.isdir(path+os.path.sep+z):
print'Currnet:',path
path2=os.path.join(path,z)
print'future:',path2
search(s,path2)
elifos.path.isfile(path+os.path.sep+z):
ifsinz:
printos.path.join(path,z)
search(raw_input('Pleaseenterastring:'))