我正在使用 Python 2.7.18 這個想法是使用 python 從指定目錄收集歌曲,然后創建并運行命令以通過一堆轉換器和聲音處理器運行它們。我的一些歌曲的字符帶有口音,任何歌曲都帶有?標題中的更改為檔案名中的 ?(倒轉問號)。
我的 convert_song 函式在運行時可以正常作業,但是當我嘗試在池中運行它并且檔案名或目錄中包含非 ascii 字符時,它會失敗并顯示:
Traceback (most recent call last):
File "C:\StreamLine.py", line 270, in <module>
result = pool.map(convert_song, qTheStack)
File "C:\Python27\lib\multiprocessing\pool.py", line 253, in map
return self.map_async(func, iterable, chunksize).get()
File "C:\Python27\lib\multiprocessing\pool.py", line 572, in get
raise self._value
UnicodeEncodeError: 'ascii' codec can't encode character u'\xbf' in position 27: ordinal not in range(128)
這是我設定游泳池的主要地點:
if __name__ == '__main__':
print('Reading artists.')
predir = 'G:\\Vault\\The Music\\'
artistfile = open('C:\\Controls\\ArtistList.txt', 'r')
artistlist = artistfile.readlines()
dirs = []
for artist in artistlist:
dirs.append(predir artist.strip())
qTheStack = []
for currentPath in dirs:
for wFile in generate_next_file(currentPath):
print(repr(wFile))
#print(convert_song(wFile))
qTheStack.append(wFile)
print('List loaded.')
pool = Pool(12)
result = pool.map(convert_song, qTheStack)
for item in result:
print(item)
運行時 print(repr(wFile)) 如下所示:
'G:\\Vault\\The Music\\Chicago\\1989 - Greatest Hits 1982-1989\\04 - Will You Still Love Me\xbf.flac'
'G:\\Vault\\The Music\\Chicago\\1989 - Greatest Hits 1982-1989\\06 - What Kind of Man Would I Be\xbf [Remix].flac'
如何從多處理中獲取內置池以接受我的輸入?
uj5u.com熱心網友回復:
換成 Python 3,伙計。
盡管我希望有一個保留在 Python 2.7 上的答案,但我嘗試了 Python 3,它并沒有讓人失望。我確實必須回到我發現的那些晦澀難懂的步驟,以生成一個將在 Python 中運行 COM/DLL 的檔案,并且我必須洗掉整個腳本中的所有 str.decode 和 encode 呼叫。僅在一次匯入更改后,我點擊運行,它按預期運行。
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/428064.html
標籤:Python python-2.7 字符编码 python-多处理
