在下面的代码中,我需要遍历目录中具有长名称和路径空格的文件。
def avg_dmg_acc(path):
for d in os.listdir(path):
sub_path = path + '/' + d
if os.path.isdir(sub_path):
if d.startswith('Front'):
for f in os.listdir(sub_path):
fpath = r"%s" % sub_path + '/' + f
print(fpath)
print(os.path.exists(fpath))
df = pd.read_csv(fpath)
然后我运行提供参数path
的函数:
path = r"./Mid-Con Master dd3d5c56-581c-42e0-acde-04e7feed3bb8/620138 91852327-e08d-4ed1-9774-383c888cb04e/Power End 2d41ba63-dfb9-4984-a5a5-153997fea43a"
avg_dmg_acc(path)
但是我得到的文件不存在错误:
File b'./Mid-Con Master dd3d5c56-581c-42e0-acde-04e7feed3bb8/620138 91852327-e08d-4ed1-9774-383c888cb04e/Power End 2d41ba63-dfb9-4984-a5a5-153997fea43a/Front c41f42ce-7158-4371-8cf6-82d1bcf04787/Damage Accumulation f907a97a-6d2d-40f6-ba02-0bc0599b773b.csv' does not exist
如您所见,我已经在使用r"path"
了,因为我在可以处理路径中空格的地方读取了它。路径也是在此版本中手动构建的,例如sub_path = path + '/' + d
,但我最初尝试使用os.path.join(path, d)
,但没有用。我还尝试了Path
中的pathlib
,因为它仍然是the recommended way in Python 3。在某一时刻,我尝试使用os.path.abspath
代替我现在在./
中使用的相对路径,但是它仍然说文件不存在。
为什么不起作用?是因为路径太长还是空格处理不正确?
答案 0 :(得分:0)
原来是导致此问题的路径长度。我尝试一次减少最低一级字符的文件夹名称,直到os.path.exists(fpath)
从false
变为true
的地步。我想我需要在处理之前重命名所有文件夹名称