Python 如何处理文件名里有空格?

2017-12-07 11:02:50 +08:00
 shadownet

#请不要看题目就说加双引号

需求是使用 Python 批量改一些文件名, 所以文件名会在变量里,请问有人结果过类似问题吗,如何解决的?

8140 次点击
所在节点    问与答
12 条回复
wwqgtxx
2017-12-07 11:27:42 +08:00
我记得 os.walk 能直接把 filename 给分割出来
shadownet
2017-12-07 11:30:52 +08:00
@wwqgtxx 是可以,不过还是需要自己转义并加上双引号,我正在试 2 种一起
roricon
2017-12-07 11:31:12 +08:00
其实没看懂你想问啥, 字符串变量里也没说不让有空格啊. 你能举个例子么?
Aliencn
2017-12-07 11:32:09 +08:00
加双引号
shadownet
2017-12-07 11:40:48 +08:00
@roricon 遍历到的文件路径 /aaa/bbb ccc/ddd eee.txt

你如果用 os 库操作它?
roricon
2017-12-07 11:45:23 +08:00
https://stackoverflow.com/a/14852407

os 库支持打开带空格的路径啊...
Osk
2017-12-07 11:46:19 +08:00
os.path.basename()
os.path.dirname()

???

我没明白为何要手动去转义,又不是 shell 脚本,最多用下 raw string 啊
shadownet
2017-12-07 11:49:14 +08:00
@roricon os 是没问题,但是我还需要 open 的
shadownet
2017-12-07 11:49:42 +08:00
@Osk 需要 open, rename
roricon
2017-12-07 12:04:23 +08:00
>>> import os
>>> folder = "abc bcd"
>>> f = open(os.path.join('/tmp', folder, 'test.txt'))
>>> f.readline()
''
>>> os.rename(os.path.join('/tmp', folder, 'test.txt'), '/tmp/abc bcd/ok.txt')

$ ls /tmp/abc\ bcd
ok.txt

还是没明白你遇到什么问题了
Osk
2017-12-07 12:56:27 +08:00
@roricon 同没明白,open()和 os.rename()处理空格都没问题。难道楼主用了 os.system("rename ")
guocdfeifei
2019-08-12 17:30:54 +08:00
尝试下用这个方法,我用了下可以哦
opfile = os.path.normpath(opfile)

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/412701

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX