通过Python重命名XP中的无效文件名
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了通过Python重命名XP中的无效文件名,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1349字,纯文字阅读大概需要2分钟。
内容图文
![通过Python重命名XP中的无效文件名](/upload/InfoBanner/zyjiaocheng/775/fd126d27510f417aa82d51b278daa57d.jpg)
我的问题类似于Python’s os.path choking on Hebrew filenames
但是,我不知道我需要重命名的文件名的原始编码(不像其他帖子,他知道它最初是希伯来语).
我正在为客户端进行数据恢复,并将文件复制到我的XP SP3机器上,
一些文件名有“?”替换/表示无效字符.
我试图使用Python来os.rename文件,因为我知道它有unicode支持,但是,当我告诉python重命名文件时,它似乎无法将有效的文件名传递回windows API.
即:
>>> os.chdir(r'F:\recovery\My Music')
>>> os.listdir(u'.')
[u'Don?t Be Them.mp3', u'That?s A Soldier.mp3']
>>> blah=os.listdir(u'.')
>>> blah[0]
Don?t Be Them.mp3
>>> os.rename(blah[0],'dont be them.mp3')
Traceback (most recent call last):
File "<pyshell#6>", line 1, in <module>
os.rename(blah[0],'dont be them.mp3')
WindowsError: [Error 123] The filename, directory name, or
volume label syntax is incorrect
我在Win XP SP3上使用Python 2.6,无论编码是美国/英语的标准XP行为.
有没有办法在不知道原始语言的情况下处理这些重命名?
解决方法:
‘?’不是文件名的有效字符.这就是你的方法失败的原因.
您可以尝试使用DOS短文件名:
import win32api
filelist = win32api.FindFiles(r'F:/recovery/My Music/*.*')
# this will extract "short names" from WIN32_FIND_DATA structure
filelist = [i[9] if i[9] else i[8] for i in filelist]
# EXAMPLE:
# this should rename all files in 'filelist' to 1.mp3, 2.mp3, 3.mp3, ...
for (number, filename) in enumerate(filelist):
os.rename(filaname, '%d.mp3' % (number))
内容总结
以上是互联网集市为您收集整理的通过Python重命名XP中的无效文件名全部内容,希望文章能够帮你解决通过Python重命名XP中的无效文件名所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。