使用Regex将文件夹内容写入CSV

时间:2014-09-03 22:53:32

标签: python regex python-2.7

我正在尝试将Python脚本here用于我自己的目的。我不是Python的家伙,所以希望有人能看出我的错误。

以下脚本不会出错。我的CSV创建时没有值。我有加入问题吗?我希望将数据写入CSV。

# import the standard libraries you'll need
import os # https://docs.python.org/2/library/os.html
import re # https://docs.python.org/2/library/re.html

# this function will walk your directories and output a list of file paths
def getFilePaths(directory):
    file_paths = []
    for root, directories, files in os.walk(directory):
        for filename in files:
            filepath = os.path.join(root, filename)
            file_paths.append(filepath)
    return file_paths

audio_file_paths = getFilePaths("Z:\Dropbox\Apps\DirScan\files")
output_to_csv = [];

for audio_file in audio_file_paths:
    base_path, fname = os.path.split(audio_file) 

    reg_ex = re.compile("^(.*) - (.*) - (.*).mp3$");

    # now apply the compiled regex to each path
    name_components = reg_ex.match(fname);

    output_to_csv.append("{0},{1}".format(",".join(name_components), base_path));

#create the file, making sure the location is writeable
csv_doc = open("database.csv", "w");

# now join all the rows with line breaks and write the compiled text to the file
csv_doc.write( '\n'.join(output_to_csv) );


#close  your new database
csv_doc.close()

1 个答案:

答案 0 :(得分:1)

运行代码时出现此错误:

Traceback (most recent call last):
  File "x.py", line 29, in <module>
    output_to_csv.append("{0},{1}".format(",".join(name_components), base_path));
TypeError

因为name_components是一个正则表达式Match对象,它不能作为join的参数。您需要替换:

",".join(name_components)

使用:

",".join(name_components.groups())

进行更改后,我可以看到CSV文件被正确写入。

另一个小问题:你不需要在python的一行末尾加一个分号。