python-3.x - Python:“FileNotFoundError”尽管能够打印此类文件
问题描述
我正在编写一个 Python3 脚本,其中代码遍历目录和子目录以提取所有 gzip 压缩的 warc 文件。我还想补充一点,文件不在我的主目录中
file_path = os.path.join('/nappa7/pip73/Service')
walk_file(parallel_bulk, file_path)
也许 python 没有在我认为的地方寻找,但是,这是我的 walk_file 函数:
def walk_file(bulk, file_path):
warc = warcat.model.WARC()
try:
for (file_path,dirs,files) in os.walk(file_path):
for filenames in files:
if filenames.endswith('.warc.gz'):
warc.load(filenames)
except ValueError:
pass
当我用这样的打印语句替换 warc.load(filenames) 时:
if filenames.endswith('.warc.gz'):
print(filenames)
文件名按预期打印到控制台上。因此,它让我相信 python 能够成功定位所有 warc.gz 文件。但是,当我尝试使用 warc.load(filenames) 时,我得到:
FileNotFoundError: [Errno 2] No such file or directory: 'Sample.warc.gz'
我当然可以使用一些指导。谢谢你。
因此,对于其他有类似问题的人:将代码更改为此有效:
warc.load(os.path.join(file_path, filenames))
解决方案
您需要使用os.path.join(file_path, filenames)
而不仅仅是filenames
.
否则操作系统会在当前目录而不是file_path
.
filenames
(当它指的是单个文件名时,为什么是复数?)
推荐阅读
- javascript - React.js,如何立即呈现用户动作(在等待服务器传播之前)
- python - 案例类型整数和没有时区的时间无法匹配
- java - 使用 apache-camel [2.24.3] 使用 SOAP 服务时出错
- c# - 如何在 C# 中获取多点字符的 Unicode 值?
- macos - TimeMachine 到 USB 4TB 格式的 apfs+ OS Mojave 设置后失败
- swift - 将 UIWebView 迁移到 WKWebview 新的 evaluateJavaScript;以正确的方式创建同步包装器
- postgresql - 如何使用 SQL 替换 postgre sql 中第二次出现的单词?
- amazon-web-services - 使用目标触发器从 Lambda 到 SQS 的多条消息
- python - 如何使用 Python 在 AWS CDK 中构造 DHCPOptionsAssociation
- ssl - Istio 远程错误:tls:错误解密消息