【发布时间】:2018-11-20 10:10:56
【问题描述】:
我正在使用 python 3.6。我正在尝试读取多个目录中的大量(.txt)文件。有些文件的文件名中有逗号,例如'Proposal for Anne, Barry and Carol.txt'.
以下代码:
for filepath in glob.iglob(params.input_dir + r'\**\**.*', recursive=True):
# [not shown here: code that filters on .txt filetype]
with open(filepath) as f:
for line in f:
for word in re.findall(r'\w+', line):
# do stuff
在读取该文件时给我一个错误:
Traceback (most recent call last):
File "dir_scraper.py", line 50, in <module>
results_new = scraper.scrape_file(filepath)
File "C:\Projects\scraper.py", line 33, in scrape_file
return func(filepath)
File "C:\Projects\scraper.py", line 15, in txt
with open(filepath) as f:
FileNotFoundError: [Errno 2] No such file or directory: 'Z:\\groups\\Proposal for Anne, Barry and Carol.txt'
我不想编辑文件的名称。
如何正确读取文件名中带有逗号的文件?
编辑:
我确定路径存在。
解析同一目录中的其他文件没有问题。
尝试直接从命令行打开文件也会给出:系统找不到指定的路径。
另外,我似乎无法重命名文件,如果我尝试通过 Windows 文件资源管理器更改名称以删除逗号(或更改其他内容),则会将其重置为原始文件名。
会不会和文件权限有关?
- 或者文件名太长了?从
Z:[..]到[..].txt的完整路径长度为270 个字符。
【问题讨论】:
-
我无法使用 Python 3.6.3 重现此行为。你能显示变量文件路径的设置位置吗?
-
也许如果你在目录上使用
listdir,你可以看到文件的实际调用。 -
正确检查文件名,我们通常不需要对文件名或任何参数字符串中的逗号名进行转义/处理。
-
您确定您的路径
Z:\\groups存在吗? -
我确定路径存在。解析同一目录中的其他文件没有问题。直接从命令行,尝试打开文件也会给出:
The system cannot find the path specified.另外,如果我尝试通过 Windows 文件资源管理器更改名称以删除逗号(或更改其他内容),我似乎无法重命名文件,它被重置为原始文件名。