我在一个文件夹中有112个音乐文件。所有这些都以【House】Supermans Feinde Shine
等音乐类型开头。
所有这些都以【
开头,我想重命名为House - Supermans Feinde Shine
我试过了:
import os
for filename in os.listdir("C:/MYMUSICSFOLDER"):
if filename.startswith("【"):
os.rename(filename, filename[7:])
但我明白了:
Error : sys:1: DeprecationWarning: Non-ASCII character '\xe3' in file C:\MYPROGRAMSFOLDER\ne11.py on line 6,but no enconding declared
我该怎么做?以这种方式重命名所有音乐文件? 我尝试了各种代码......但我无法做到。
当我说"歌曲"我有一个执行音乐的程序。但是当我尝试这样做时,我得到一个错误;所有其他功能完美运作。 这是代码......
import os,sys,random
import webbrowser
import speech
import sys
def callback(phrase, listener):
print ": %s" % phrase
if phrase == "songs":
folder = os.listdir("C:/users/william/desktop/music/xkito music")
file = random.choice(folder)
ext3= ['.mp3','.mp4','.wmv']
while file[-4:] not in ext3 :
file = random.choice(folder)
else:
os.startfile(file)
speech.say('Playing Music')
if phrase == "open opera":
webbrowser.open('http://www.google.com')
speech.say("Opening opera")
if phrase == "turn off":
speech.say("Goodbye.")
listener.stoplistening()
sys.exit()
print "Anything you type, speech will say back."
print "Anything you say, speech will print out."
print "Say or type 'turn off' to quit."
print
listener= speech.listenforanything(callback)
while listener.islistening():
text = raw_input("> ")
if text == "turn off":
listener.stoplistening()
sys.exit()
else:
speech.say(text)
我在尝试执行音乐时遇到此错误:
pythoncom error: Python error invoking COM method.
Traceback (most recent call last):
File "C:\Python24\Lib\site-packages\win32com\server\policy.py", line 277, in _Invoke_
return self._invoke_(dispid, lcid, wFlags, args)
File "C:\Python24\Lib\site-packages\win32com\server\policy.py", line 282, in _invoke_
return S_OK, -1, self._invokeex_(dispid, lcid, wFlags, args, None, None)
File "C:\Python24\Lib\site-packages\win32com\server\policy.py", line 585, in _invokeex_
return func(*args)
File "C:\Users\william\Desktop\speech-0.5.2\speech.py", line 138, in OnRecognition
self._callback(phrase, self._listener)
File "C:\Users\william\Desktop\speech-0.5.2\example.py", line 21, in callback
os.startfile(file)
WindowsError: [Errno 2] The system can not find the specified file: '?Glitch Hop?Chinese Man - I Got That Tune (Tha Trickaz Remix) [Free Download].mp4
名称开头的?
为【
和】
答案 0 :(得分:0)
错误是关于处理unicode UTF-8字符。
我认为filename[7:]
甚至会在其两个字节之间拆分UTF-8字符,以便rename()
看到部分字符。
正确的解决方法是正确处理UTF-8。
解决这个问题的一种方法是不使用字符串的单个字节,而只使用字符串,这与编码不相关:
要将【House】Superfoo
转换为House - Superfoo
,您可以
用空字符串替换【
,用】
替换-
。
将结果用作新文件名。如果原始名称不是预期的格式,则名称不会更改,也不会发生任何变化。这不是错误,程序甚至没有注意到。