Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/windows/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
具有特殊字符的Python子进程命令_Python_Windows_Subprocess_Special Characters_Python 2.x - Fatal编程技术网

具有特殊字符的Python子进程命令

具有特殊字符的Python子进程命令,python,windows,subprocess,special-characters,python-2.x,Python,Windows,Subprocess,Special Characters,Python 2.x,我有一个脚本,可以从文件夹中获取视频文件,并使用子进程对其调用ffmpeg命令。在我尝试在文件名中添加重音之前,一切都正常。当文件名没有重音时,我有ffmpeg命令输出,但是我没有得到带有重音的文件名,所以我不知道错误。 我正在Windows上使用Python 2.6 我的子流程调用如下所示: p=subprocess.Popen(command) p.wait() ['\\\\path\\to\\ffmpeg\\bin\\ffmpeg.exe', '-i', u'\\\\path

我有一个脚本,可以从文件夹中获取视频文件,并使用子进程对其调用ffmpeg命令。在我尝试在文件名中添加重音之前,一切都正常。当文件名没有重音时,我有ffmpeg命令输出,但是我没有得到带有重音的文件名,所以我不知道错误。 我正在Windows上使用Python 2.6

我的子流程调用如下所示:

p=subprocess.Popen(command)
p.wait()
['\\\\path\\to\\ffmpeg\\bin\\ffmpeg.exe', 
 '-i',   
 u'\\\\path\\to\\root\\folder\\\xd9\xda\xdb\xdc\xdd\xe0\xe1\xe2\xe3\xe4\xe5\xe8\xe9\xea\xeb\xec\xed\xee\xef\xf1\xf2\xf3\xf4\xf5\xf6\xf9\xfa\xfb\xfc\xfd\xff.avi', 
 '-vcodec', 'mjpeg', 
 '-qscale', '1', 
 '-y', 
 '-r', '30000/1001', 
 '-vf', 'scale=1280x720,setsar=1:1', 
 '-strict', '-2', 
 '-codec:a', 
 'copy', 
 u'\\\\path\\to\\root\\folder\\Converted\\\xd9\xda\xdb\xdc\xdd\xe0\xe1\xe2\xe3\xe4\xe5\xe8\xe9\xea\xeb\xec\xed\xee\xef\xf1\xf2\xf3\xf4\xf5\xf6\xf9\xfa\xfb\xfc\xfd\xff_20170321.mov']
我的命令参数如下所示:

p=subprocess.Popen(command)
p.wait()
['\\\\path\\to\\ffmpeg\\bin\\ffmpeg.exe', 
 '-i',   
 u'\\\\path\\to\\root\\folder\\\xd9\xda\xdb\xdc\xdd\xe0\xe1\xe2\xe3\xe4\xe5\xe8\xe9\xea\xeb\xec\xed\xee\xef\xf1\xf2\xf3\xf4\xf5\xf6\xf9\xfa\xfb\xfc\xfd\xff.avi', 
 '-vcodec', 'mjpeg', 
 '-qscale', '1', 
 '-y', 
 '-r', '30000/1001', 
 '-vf', 'scale=1280x720,setsar=1:1', 
 '-strict', '-2', 
 '-codec:a', 
 'copy', 
 u'\\\\path\\to\\root\\folder\\Converted\\\xd9\xda\xdb\xdc\xdd\xe0\xe1\xe2\xe3\xe4\xe5\xe8\xe9\xea\xeb\xec\xed\xee\xef\xf1\xf2\xf3\xf4\xf5\xf6\xf9\xfa\xfb\xfc\xfd\xff_20170321.mov']
我的文件名原始字符串是
Ù218;ÛÝáååëìîòòòý.avi
,但我甚至在文件名中只使用了一个简单的重音
é
,它也不起作用。此外,我还尝试直接从命令行运行ffmpeg,效果良好。 我想这是一个编码问题,但所有的编码内容对我来说都是一个谜,所以我提前道歉


编辑:这可能是一个潜在问题,但我没有使用任何外部模块。

这是Python 2还是Python 3?显然,底层系统是Windows?什么代码页和语言环境是什么?我编辑了我的文章,我在Windows上使用Python 2.6。关键问题是文件系统的代码页。代码页是OEM美国(437),语言环境是en-us@tripleee,Windows文件系统是UCS-2。除了允许单独的代理代码(这是无效的UTF-16)之外,它们大部分都是Unicode。Narth的问题是Python2.x
subprocess.Popen
调用
CreateProcessA
(ANSI,而不是OEM)。如果您四处搜索,您可以找到子类
Popen
使用
CreateProcessW
(Unicode)使用ctypes或PyWin32的变通方法,或者您也可以自己编写。