关于如何用os.path获得每个文件(夹)的名称及拓展名
本帖最后由 Nmbh 于 2020-6-6 15:05 编辑我想使用os.listdir和os.path.splitext获得当前目录文件(夹)的文件名及拓展名,并保存到列表中。
我想把文件夹在列表中的拓展名“”改为“文件夹”,用了三元操作符‘“exten = "文件夹" if (exten == "")”,但结果出错了,请大神解答{:10_266:}
f = os.listdir()
content = []
for each in f:
= os.path.splitext(each)
exten = "文件夹" if (exten == "")
content.append() f = os.listdir()
content = []
for each in f:
= os.path.splitext('A')
exten = "文件夹"
if exten == "":
content.append() 测试.....(刚才被审了)
我想把文件夹在列表中的拓展名“”改为“文件夹
看不懂 能重新叙述下不? Twilight6 发表于 2020-6-6 14:02
看不懂 能重新叙述下不?
就是我想把当前目录中的文件(包含文件夹)的文件名和后缀分开了保存成列表[文件名,后缀]。我使用os.listdir获得一个包含所有文件的列表f,并通过代码03-04获得每个文件的列表[文件名,后缀],由于文件夹是没有后缀名的,在列表中的后缀名为“”,我想手动把文件夹的后缀名改为“文件夹”,就用了代码05的三元操作符表达,结果发现加上这一语句后就错误了,请大神解答一下{:10_266:} Nmbh 发表于 2020-6-6 15:11
就是我想把当前目录中的文件(包含文件夹)的文件名和后缀分开了保存成列表[文件名,后缀]。我使用os.lis ...
你想把后缀名当文件名?是吧?
Twilight6 发表于 2020-6-6 15:15
你想把后缀名当文件名?是吧?
不是,我是想在得到一个[文件名,文件后缀]的列表,比如test.txt就是,文件夹test就是。
因为文件夹没有后缀,我想手动把文件夹的列表改成。
我1L的代码里我为了图方面把05行代码写成三元操作符的形式结果报错了,我在下面代码中改成if else的语句又好了,想请教一下大神如果写三元操作符该怎么写。
f = os.listdir()
content = []
for each in f:
= os.path.splitext(each)
# exten = '文件夹' if exten == ""
if exten == "":
exten = "文件夹"
content.append() Nmbh 发表于 2020-6-6 15:27
不是,我是想在得到一个[文件名,文件后缀]的列表,比如test.txt就是,文件夹test就是
xxxif <条件> else yyy
条件满足 返回 xxx
条件不满足 返回 yyy Nmbh 发表于 2020-6-6 15:27
不是,我是想在得到一个[文件名,文件后缀]的列表,比如test.txt就是,文件夹test就是
你这里没写 不满足条件的结果 ...就不用三元运算符 Twilight6 发表于 2020-6-6 15:36
你这里没写 不满足条件的结果 ...就不用三元运算符
多谢指点,我只想替换给文件夹加上“文件夹”的后缀,不想改变其他后缀,我就写了"else pass",结果还是出错了。
我想问下大神如果我else里不想执行任何东西该怎么写代码?
os.chdir('E:\\')
f = os.listdir()
content = []
for each in f:
= os.path.splitext(each)
exten = '文件夹' if exten == "" else pass
#if exten == "":
# exten = "文件夹"
content.append() Nmbh 发表于 2020-6-6 15:42
多谢指点,我只想替换给文件夹加上“文件夹”的后缀,不想改变其他后缀,我就写了"else pass",结果还是出 ...
因为你 exten 总不能反之 等于pass吧.... Twilight6 发表于 2020-6-6 15:47
因为你 exten 总不能反之 等于pass吧....
大神,请问该怎么写才能实现类似于pass的效果而不是赋值?
#if exten == "":
# exten = "文件夹" Nmbh 发表于 2020-6-6 15:52
大神,请问该怎么写才能实现类似于pass的效果而不是赋值?
为什么一定要用我有点搞不明白...简单的一个if完全不需要用三元运算符简单搞复杂是吗?
if exten == "":exten = '文件夹' 我不知道你是不是这个意思
import os
path = r'E:\Data_storage\PyCharm'
file_list = os.listdir(path)
for each in file_list:
name, exten = os.path.splitext(each)
exten = '文件夹' if exten == '' else exten.replace('.', '')
print(name, exten)
这是我运行的结果
Built-in Functions png
douyu py
learn 文件夹
real-url-master 文件夹
something txt
something2 txt
列表内置方法 png March2615 发表于 2020-6-6 16:05
我不知道你是不是这个意思
这是我运行的结果
。。。你晚了几秒 不然最佳可能就是你的了{:9_233:} March2615 发表于 2020-6-6 16:05
我不知道你是不是这个意思
这是我运行的结果
是的,谢谢解答 Twilight6 发表于 2020-6-6 15:54
为什么一定要用我有点搞不明白...简单的一个if完全不需要用三元运算符简单搞复杂是吗?
主要是我有用过stata实现相似的字符串替换,但是习惯不写else了,就钻了下牛角尖。
replace exten = "" if exten == ""
页:
[1]