我有一个包含许多子文件夹的文件夹。首先,我想检查是否有".txt"
个文件。如果是,无论同一文件夹中是否存在任何其他文件格式,我都不会做任何事情。如果没有,我会检查是否有".csv"
,如果是,我想将它/它们转换为".txt"
。这同样适用于此,如果我找到".csv"
,我也不关心其他文件格式
如果没有".txt"
或".csv"
,可能是".doc"
。所以,我想将它们转换为".txt"
所以逻辑是:找到".txt"
,如果你找到;继续,不要对该文件夹做任何事情。如果您找不到".txt"
,请查找".csv"
,如果找到".csv"
,请将其转换为".txt"
。否则,请查找".doc"
并执行相同操作。
我怎么能这样做?
答案 0 :(得分:1)
首先,您需要在所需的文件夹中找到任何目录。您可以使用os.walk(directory)
返回文件夹和任何子文件夹的生成器,以及其中的文件。然后你只需要为你想要的东西写一些if / elif
语句。这是你需要的第一部分。
from os import walk, rename, join
directory = './'
for folder, subfolders, filenames in os.walk(directory):
if any([filename.endswith('.txt') for filename in filenames]):
continue # goes to the next iteration
elif any([filename.endswith('.csv') for filename in filenames]):
for filename in filenames:
if filename.endswith('.csv'):
rename(join(folder, filename), join(folder, filename.replace('.txt'))) # rename changes a file's name, and join here is used for putting together the full path of the file
您仍需要处理doc
文件,我建议您始终确保了解代码的作用。如果您不熟悉迭代或循环,请检查this。请注意,本教程适用于Python 2,除print
中的括号外,其他所有内容都保持不变。