python 将文件名更改为 unicode 字符印地语
python change file names to unicode chars Hindi
我正在尝试将文件名更改为我从逐行读取的文件中获取的 unicode。当我尝试重命名文件时,我在这里收到错误。这是代码
import codecs
import os
arrayname = []
arrayfile = []
f = codecs.open('E:\songs.txt', encoding='utf-8', mode='r+')
for line in f:
arrayname.append(line)
for filename in os.listdir("F:\songs"):
if filename.endswith(".mp3"):
arrayfile.append(filename)
for num in range(0,len(arrayname)):
print "F:\songs\" + arrayfile[num]
os.rename("F:\songs\" + arrayfile[num], "F:\songs\" + (arrayname[num]))
我遇到了这个错误
Traceback (most recent call last):
File "C:\read.py", line 25, in <module>
os.rename("F:\songs\" + arrayfile[num], "F:\songs\" + (arrayname[num]))
WindowsError: [Error 123] The filename, directory name, or volume label syntax is in
correct
如何更改文件的名称?
您忘记从行尾删除 换行符。使用 str.rstrip()
:
删除它
for line in f:
arrayname.append(line.rstrip('\n'))
您可以稍微简化您的代码,并使用最佳实践来确保文件已关闭。我会使用更新的(设计更好的)io.open()
而不是 codecs.open()
。如果您对路径使用 Unicode 文字,Python 将确保您在列出时获得 Unicode 文件名:
import io
import os
import glob
directory = u"F:\songs"
songs = glob.glob(os.path.join(directory, u"*.mp3"))
with io.open('E:\songs.txt', encoding='utf-8') as newnames:
for old, new in zip(songs, newnames):
oldpath = os.path.join(directory, old)
newpath = os.path.join(directory, new.rstrip('\n'))
print oldpath
os.rename(oldpath, newpath)
我使用 glob
module 过滤掉匹配的文件名。
我正在尝试将文件名更改为我从逐行读取的文件中获取的 unicode。当我尝试重命名文件时,我在这里收到错误。这是代码
import codecs
import os
arrayname = []
arrayfile = []
f = codecs.open('E:\songs.txt', encoding='utf-8', mode='r+')
for line in f:
arrayname.append(line)
for filename in os.listdir("F:\songs"):
if filename.endswith(".mp3"):
arrayfile.append(filename)
for num in range(0,len(arrayname)):
print "F:\songs\" + arrayfile[num]
os.rename("F:\songs\" + arrayfile[num], "F:\songs\" + (arrayname[num]))
我遇到了这个错误
Traceback (most recent call last):
File "C:\read.py", line 25, in <module>
os.rename("F:\songs\" + arrayfile[num], "F:\songs\" + (arrayname[num]))
WindowsError: [Error 123] The filename, directory name, or volume label syntax is in
correct
如何更改文件的名称?
您忘记从行尾删除 换行符。使用 str.rstrip()
:
for line in f:
arrayname.append(line.rstrip('\n'))
您可以稍微简化您的代码,并使用最佳实践来确保文件已关闭。我会使用更新的(设计更好的)io.open()
而不是 codecs.open()
。如果您对路径使用 Unicode 文字,Python 将确保您在列出时获得 Unicode 文件名:
import io
import os
import glob
directory = u"F:\songs"
songs = glob.glob(os.path.join(directory, u"*.mp3"))
with io.open('E:\songs.txt', encoding='utf-8') as newnames:
for old, new in zip(songs, newnames):
oldpath = os.path.join(directory, old)
newpath = os.path.join(directory, new.rstrip('\n'))
print oldpath
os.rename(oldpath, newpath)
我使用 glob
module 过滤掉匹配的文件名。