根据文件名重命名python中的文件

时间:2014-06-27 21:56:09

标签: python

我正在创建一个小脚本,根据不同的标准重命名文件夹中的文件。我试图使用它,但在这一点上坚持

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

谢谢我已经尝试了一段时间,我找不到解决方案

2 个答案:

答案 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"):

现在你真的不关心rootdirs,但如果你必须重命名文件(或其他),那么你就是这样。至少需要root,因为您正在做os.rename(os.path.join(root, filename), "newname.txt")