gpt4 book ai didi

Python 显示 No such file or directory 错误,尽管文件存在

转载 作者:行者123 更新时间:2023-12-03 23:53:41 25 4
gpt4 key购买 nike

我想从多个文件中搜索一个字符串

我试过的:

import os
path= 'sample1/nvram2/logs'
all_files=os.listdir(path)
for my_file1 in all_files:
print(my_file1)
with open(my_file1, 'r') as my_file2:
print(my_file2)
for line in my_file2:
if 'string' in line:
print(my_file2)

输出:
C:\Users\user1\scripts>python search_string_3.py
abcd.txt
Traceback (most recent call last):
File "search_string_3.py", line 6, in <module>
with open(my_file1, 'r') as my_file2:
FileNotFoundError: [Errno 2] No such file or directory: 'abcd.txt'

但是文件 abcd.txt 存在于 C:\Users\user1\scripts\sample1\nvram2\logs

为什么错误显示没有这样的文件或目录?

使用 glob:

当我使用 all_files=glob.glob(path) 时显示以下错误而不是 all_files=os.listdir(path)
C:\Users\user1\scripts>python search_string_3.py
sample1/nvram2/logs
Traceback (most recent call last):
File "search_string_3.py", line 7, in <module>
with open(my_file1, 'r') as my_file2:
PermissionError: [Errno 13] Permission denied: 'sample1/nvram2/logs'

最佳答案

你想出了/猜到了第一个问题。用文件名加入目录可以解决它。 A classic :

with open(os.path.join(path,my_file1), 'r') as my_file2:
如果您不尝试使用 glob,我不会在意回答.现在:
for x in glob.glob(path):
path是一个目录, glob将其作为自身进行评估(您会得到一个包含一个元素的列表: [path] )。您需要添加通配符:
for x in glob.glob(os.path.join(path,"*")):
glob 的另一个问题是如果目录(或模式)与任何内容都不匹配,您就不会收到任何错误。它什么都不做... os.listdir版本至少崩溃。
并在打开之前测试它是否是一个文件(在这两种情况下),因为尝试打开目录会导致 I/O 异常:
if os.path.isfile(x):
with open ...
简而言之 os.path在操作文件时,包是您的 friend 。或 pathlib 如果您喜欢面向对象的路径操作。

关于Python 显示 No such file or directory 错误,尽管文件存在,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53296542/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com