我正在使用 python3 打开当前目录中的文本文件并阅读所有行。
test.txt 中的每一行都是一个图像路径。
我的目标是获取文件扩展名之前的路径(有效),但是当我尝试使用 path 对象与不同的字符串连接时,python 无法识别 path 作为字符串对象,即使在我尝试使用 str() 进行转换之后也是如此。相反,它将其视为 NoneType。我在这里做错了什么,解决方法是什么?
with open("test.txt", "r") as ins:
lines = ins.readlines()
for line in lines:
path = print(line.split('.')[0])
print(type(path))
输出:
/Users/admin/myfolder/IMG_1889
<class 'NoneType'>
with open("test.txt", "r") as ins:
lines = ins.readlines()
for line in lines:
path = print(line.split('.')[0])
print(str(path))
输出:
/Users/admin/myfolder/IMG_1889
None
这是文件中的内容:
$ cat test.txt
/Users/admin/myfolder/IMG_1901.jpg
/Users/admin/myfolder/IMG_1928.jpg
/Users/admin/myfolder/IMG_2831.jpg
/Users/admin/myfolder/IMG_1889.jpg
/Users/admin/myfolder/IMG_2749.jpg
/Users/admin/myfolder/IMG_1877.jpg
请您参考如下方法:
print() 函数返回None。您需要将 path 分配给拆分结果,然后打印它。
with open("test.txt", "r") as ins:
lines = ins.readlines()
for line in lines:
path = line.split('.')[0]
print(path)
print(type(path))
但是,您应该为此任务使用标准库(版本 3.4+):
import pathlib
with open('test.txt', 'r') as ins:
for path in (pathlib.Path(line) for line in ins):
print(path.stem)
print(type(path.stem))
如果文件名中有超过 1 个 .,您当前的解决方案将无法提取扩展名之前的文件名部分,这很常见。使用 pathlib 可以避免这个问题,并提供更多有用的功能。
