根据文件夹

时间:2017-06-23 10:22:02

标签: python csv

我有一个包含许多子文件夹的文件夹。首先,我想检查是否有".txt"个文件。如果是,无论同一文件夹中是否存在任何其他文件格式,我都不会做任何事情。如果没有,我会检查是否有".csv",如果是,我想将它/它们转换为".txt"。这同样适用于此,如果我找到".csv",我也不关心其他文件格式

如果没有".txt"".csv",可能是".doc"。所以,我想将它们转换为".txt"

所以逻辑是:找到".txt",如果你找到;继续,不要对该文件夹做任何事情。如果您找不到".txt",请查找".csv",如果找到".csv",请将其转换为".txt"。否则,请查找".doc"并执行相同操作。 我怎么能这样做?

1 个答案:

答案 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中的括号外,其他所有内容都保持不变。