尝试使用python重命名多个文件时出错

时间:2014-11-21 19:05:43

标签: python syntax-error

我在一个文件夹中有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

名称开头的?

1 个答案:

答案 0 :(得分:0)

错误是关于处理unicode UTF-8字符。

我认为filename[7:]甚至会在其两个字节之间拆分UTF-8字符,以便rename()看到部分字符。

正确的解决方法是正确处理UTF-8。

解决这个问题的一种方法是不使用字符串的单个字节,而只使用字符串,这与编码不相关:

要将【House】Superfoo转换为House - Superfoo,您可以 用空字符串替换,用替换-

将结果用作新文件名。如果原始名称不是预期的格式,则名称不会更改,也不会发生任何变化。这不是错误,程序甚至没有注意到。