我正在使用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
答案 0 :(得分:4)
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可以避免此问题,并提供许多其他有用的功能。
答案 1 :(得分:3)
在线
path = print(line.split('.')[0])
您分配print
(即None
)的返回结果。
您可能要使用:
path = line.split('.')[0]
print(path)
,不需要lines = ins.readlines()
行。
总之,我建议您使用
with open("test.txt", "r") as ins:
for line in ins:
path = line.split('.')[0]
print(path)
print(type(path))