Skip to main content
 首页 » 编程设计

python之读取为 NoneType 的 txt 行

2025年05月04日14dflying

我正在使用 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 可以避免这个问题,并提供更多有用的功能。