沒有仔細看,但你的第一句就有錯
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:'))