避免在 Python 中的字符串中使用逗号将引号写入文本文件
Avoid writing quotes to text file with comma present in string in Python
我的代码当前搜索以任何音频文件扩展名结尾的文件,returns 文件名,然后将路径 + 文件名存储到文本文件中。
很简单,它可以工作,但是当滚动浏览时我注意到一些条目整行都有引号。这些将是文件名中有逗号的那些;
Screenshot
这是代码:
def getFiles():
tracks = []
for root, dirs, files in os.walk("E:\Music"):
for name in files:
if name.endswith((".mp3",".m4a",".alac",".flac")):
tracks.append(root+"\"+name)
return tracks
我的问题显然是如何将文件路径写入不带引号的文本文件?
更新:
这是将文件路径写入文本文件的代码
with open("songs.txt", "a") as songsFile:
writeSongsFile = csv.writer(songsFile)
for line in getFiles():
writeSongsFile.writerow([line])
songsFile.close()
你在任何有逗号的值周围得到引号的原因是因为你正在使用 csv.writer
来打印你的歌曲列表。
看,csv
是一个模块,用于处理 逗号分隔值 文件(即电子表格,其中每一列由逗号分隔:col1, col2, col3, ...
).因此,如果其中一列 包含 一个逗号,则需要对其进行转义,最方便的方法是将整个内容放在引号中。 csv
模块知道这一点,并自动执行。
然而,在这里,您似乎只想将此列表放入文件中。没有逗号或任何东西,只是一个由换行符分隔的列表。在这种情况下,您不需要使用 csv
模块 - 事实上,我建议不要使用它,因为正是您遇到的问题。使用 python 的内置文件 I/O 代替:
with open("songs.txt", "a") as songsFile:
for line in getFiles():
songsFile.write(line + '\n')
问题是您正在以 CSV 格式写入文件,因此根据 CSV 格式约定用逗号引用值。
由于您并没有真正将文件用作 CSV,因此您应该直接将文件名写入文件,并用换行符分隔:
with open("songs.txt", "a") as songsFile:
songsFiles.write('\n'.join(getLines()) + '\n')
我的代码当前搜索以任何音频文件扩展名结尾的文件,returns 文件名,然后将路径 + 文件名存储到文本文件中。
很简单,它可以工作,但是当滚动浏览时我注意到一些条目整行都有引号。这些将是文件名中有逗号的那些;
Screenshot
这是代码:
def getFiles():
tracks = []
for root, dirs, files in os.walk("E:\Music"):
for name in files:
if name.endswith((".mp3",".m4a",".alac",".flac")):
tracks.append(root+"\"+name)
return tracks
我的问题显然是如何将文件路径写入不带引号的文本文件?
更新:
这是将文件路径写入文本文件的代码
with open("songs.txt", "a") as songsFile:
writeSongsFile = csv.writer(songsFile)
for line in getFiles():
writeSongsFile.writerow([line])
songsFile.close()
你在任何有逗号的值周围得到引号的原因是因为你正在使用 csv.writer
来打印你的歌曲列表。
看,csv
是一个模块,用于处理 逗号分隔值 文件(即电子表格,其中每一列由逗号分隔:col1, col2, col3, ...
).因此,如果其中一列 包含 一个逗号,则需要对其进行转义,最方便的方法是将整个内容放在引号中。 csv
模块知道这一点,并自动执行。
然而,在这里,您似乎只想将此列表放入文件中。没有逗号或任何东西,只是一个由换行符分隔的列表。在这种情况下,您不需要使用 csv
模块 - 事实上,我建议不要使用它,因为正是您遇到的问题。使用 python 的内置文件 I/O 代替:
with open("songs.txt", "a") as songsFile:
for line in getFiles():
songsFile.write(line + '\n')
问题是您正在以 CSV 格式写入文件,因此根据 CSV 格式约定用逗号引用值。
由于您并没有真正将文件用作 CSV,因此您应该直接将文件名写入文件,并用换行符分隔:
with open("songs.txt", "a") as songsFile:
songsFiles.write('\n'.join(getLines()) + '\n')