繁体   English   中英

预期的 str、字节或 os.PathLike object,而不是列表(想从列表中获取文件名)

[英]expected str, bytes or os.PathLike object, not list ( want to get file names from list)

我试图只获取不带扩展名的文件名,尽管这是我正在尝试阅读的书中所说的内容,但我仍然会收到此错误。

import os
import re
stringA =[fname.rsplit(' ',0)[0] for fname in os.listdir("C:\\Users\\Desktop\\New folder\\New folder\\")]
stringA1 = os.path.splitext(os.path.basename(stringA))[0]

我收到此错误:

~\Anaconda3\lib\ntpath.py in basename(p) 
    214 def basename(p): 
    215 """Returns the final component of a pathname""" 
--> 216 return split(p)[1] 
    217 
    218 
~\Anaconda3\lib\ntpath.py in split(p) 
    183 Return tuple (head, tail) where tail is everything after the final slash. 
    184 Either part may be empty.""" 
--> 185 p = os.fspath(p) 
    186 seps = _get_bothseps(p) 
    187 d, p = splitdrive(p) 
TypeError: expected str, bytes or os.PathLike object, not list

在你的代码的第一行 - 你想用. 而不是按空格作为. 将是文件名及其扩展名之间的分隔符。

此外,您希望将值1传递给maxsplit参数 - 这意味着您最多需要 1 次拆分。 0 表示您根本不想拆分输入

stringA =[fname.rsplit('.',1)[0] for fname in os.listdir("C:\\Users\\Desktop\\New folder\\New folder\\")]

仅获取文件夹中的所有文件:-

import os
folder = "C:\\Users\\Folder"

for files in os.listdir(folder):
    filelist = (files.partition(".")[0])
    print(filelist)

要获取文件夹和子文件夹中的所有文件,请使用:-

import os
folder = "C:\\Users\\Folder"

for root, dir, files in os.walk(folder):
    for file in files:    
        filelist = (file.partition(".")[0])
        print(filelist)

如果只想获取文件名,没有扩展名,也没有前面的路径,可以将os.path.splitext function 与字符串类型的split function 结合使用:

>>> import os
>>> p = 'c/folder/folder/file.txt'
>>> os.path.splitext(p)[0].split('/')[-1]
'file'

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM