pathlib iterdir() 的问题
Problems with pathlib iterdir()
对于我的项目,我从我的文本文件中读取一行输入 "D C:/Test/Project1"。 D 表示打印目录中的文件,忽略子目录。 "R"表示打印目录和每个子目录中的文件。具体目录在 space 后面的字母后面。该目录包含一些 python 个文件。
import os
from pathlib import Path
infile = open("input.txt", "r")
def subfolder(p):
contents = p.iterdir()
for i in contents:
if i.is_file():
print(i)
elif i.is_dir():
subfolder(i)
for line in infile:
if line[0] == "R":
p = Path(str(line[2:]))
contents = p.iterdir()
for i in contents:
print(i)
if i.is_file():
print(i)
elif i.is_dir():
subfolder(i)
elif line[0] == "D":
p = Path(str(line[2:]))
contents = p.iterdir()
for i in contents:
print(i)
if i.is_file():
print(i)
else:
print("ERROR")
infile.close()
当我 运行 此代码时,我收到错误消息
Traceback (most recent call last):
File "C:\Users\jmelu\AppData\Local\Programs\Python\Python36-32\Project 1.py", line 32, in <module>
for i in contents:
File "C:\Users\jmelu\AppData\Local\Programs\Python\Python36-32\lib\pathlib.py", line 1059, in iterdir
for name in self._accessor.listdir(self):
File "C:\Users\jmelu\AppData\Local\Programs\Python\Python36-32\lib\pathlib.py", line 387, in wrapped
return strfunc(str(pathobj), *args)
OSError: [WinError 123] The filename, directory name, or volume label syntax is incorrect: 'C:\Test\Project1\n'
以前,这个完全相同的代码可以更早地工作,并且它也可以在其他计算机上工作。我尝试重新安装 pathlib 但没有成功。我在 python 3.6.2.
您正在从每行一个路径的文件中读取您的路径,但您没有从每个字符串中删除换行符,因此您正在寻找包含换行符的文件,\n
.如您的错误消息所述,无效路径为:
'C:\Test\Project1\n' <-- Single slash followed by n; directories are double slash separated
阅读时将它们脱掉,您会没事的:
for line in infile:
line = line.rstrip("\r\n") # Removes all trailing carriage returns and newlines
if line[0] == "R":
对于我的项目,我从我的文本文件中读取一行输入 "D C:/Test/Project1"。 D 表示打印目录中的文件,忽略子目录。 "R"表示打印目录和每个子目录中的文件。具体目录在 space 后面的字母后面。该目录包含一些 python 个文件。
import os
from pathlib import Path
infile = open("input.txt", "r")
def subfolder(p):
contents = p.iterdir()
for i in contents:
if i.is_file():
print(i)
elif i.is_dir():
subfolder(i)
for line in infile:
if line[0] == "R":
p = Path(str(line[2:]))
contents = p.iterdir()
for i in contents:
print(i)
if i.is_file():
print(i)
elif i.is_dir():
subfolder(i)
elif line[0] == "D":
p = Path(str(line[2:]))
contents = p.iterdir()
for i in contents:
print(i)
if i.is_file():
print(i)
else:
print("ERROR")
infile.close()
当我 运行 此代码时,我收到错误消息
Traceback (most recent call last):
File "C:\Users\jmelu\AppData\Local\Programs\Python\Python36-32\Project 1.py", line 32, in <module>
for i in contents:
File "C:\Users\jmelu\AppData\Local\Programs\Python\Python36-32\lib\pathlib.py", line 1059, in iterdir
for name in self._accessor.listdir(self):
File "C:\Users\jmelu\AppData\Local\Programs\Python\Python36-32\lib\pathlib.py", line 387, in wrapped
return strfunc(str(pathobj), *args)
OSError: [WinError 123] The filename, directory name, or volume label syntax is incorrect: 'C:\Test\Project1\n'
以前,这个完全相同的代码可以更早地工作,并且它也可以在其他计算机上工作。我尝试重新安装 pathlib 但没有成功。我在 python 3.6.2.
您正在从每行一个路径的文件中读取您的路径,但您没有从每个字符串中删除换行符,因此您正在寻找包含换行符的文件,\n
.如您的错误消息所述,无效路径为:
'C:\Test\Project1\n' <-- Single slash followed by n; directories are double slash separated
阅读时将它们脱掉,您会没事的:
for line in infile:
line = line.rstrip("\r\n") # Removes all trailing carriage returns and newlines
if line[0] == "R":