如何让 pool.py 接受非 ascii 字符?

How to get pool.py to accept non ascii characters?

我正在使用 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)

当 运行:

时打印(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'

如何从多处理中获取 built-in 池以接受我的输入?

改为Python3,老兄。

尽管我希望在 Python 2.7 上有一个答案,但我尝试了 Python 3,结果并不令人失望。 我确实必须返回 obscure steps 我发现生成一个文件 运行 一个 COM/DLL in Python,我不得不删除所有 str.decode 并在我的脚本中对调用进行编码。仅一次导入更改后,我按预期点击了 运行 和 运行。