我正在创建一个小脚本,根据不同的标准重命名文件夹中的文件。我试图使用它,但在这一点上坚持
f = []
for file in os.walk(outputfolder):
f.append(file)
在文件夹(c:\文件夹)中我有2个文件: file1.csv,file2.csv
如何创建一个进入文件夹内部的循环并为每个文件执行某些操作
if(file1.csv.find(1) > 0)
do this
else
do this
谢谢我已经尝试了一段时间,我找不到解决方案
答案 0 :(得分:1)
os.walk
可能有点过分。 os.listdir
提供的复杂性较低。
如果您想对文件名或文件内容进行操作,您的问题就不明确了。所以我在下面提供。:
import os
outputfolder = "/home/jack/code/tests"
for filename in os.listdir(outputfolder):
# just the filename
print filename
if "1" in filename:
print "\t1 is in the filename %s" % (filename)
# the file contents
file_path = os.path.join(outputfolder, filename)
with open(file_path) as f:
file_contents = f.read()
if "1" in file_contents:
print "\t1 is in the contents of %s" % (filename)
print "---"
答案 1 :(得分:0)
for root, dirs, files in os.walk("path/to/folder"):
for filename in files:
if "1" in filename:
do_something()
else:
do_something_else()
使用os.walk
时,它会返回目录树的生成器。想象一下测试目录:
C:\temp
| \subdir
| | subfile1.txt
| | subfile2.txt
| file1.txt
| file2.txt
list(os.walk)
将产生:
[("C:\\temp", ["subdir"], ["file1.txt","file2.txt"]),
("C:\\temp\\subdir", [], ["subfile1.txt","subfile2.txt"])]
也就是说,每次迭代都会为原始参数中的每个子目录生成root, list_of_directories_in_root, list_of_files_in_root
。因此,我们以相同的方式迭代os.walk
:
for root, dirs, files in os.walk("path/to/folder"):
现在你真的不关心root
或dirs
,但如果你必须重命名文件(或其他),那么你就是这样。至少需要root
,因为您正在做os.rename(os.path.join(root, filename), "newname.txt")
。