subprocess.Popen with a unicode path(subprocess.Popen 带有 unicode 路径)
问题描述
我想打开一个 unicode 文件名.以下代码:
I have a unicode filename that I would like to open. The following code:
cmd = u'cmd /c "C:\Pokxe9mon.mp3"'
cmd = cmd.encode('utf-8')
subprocess.Popen(cmd)
返回
>>> 'C:Pokיmon.mp3' is not recognized as an internal or external command, operable program or batch file.
即使该文件确实存在.为什么会这样?
even though the file do exist. Why is this happening?
推荐答案
看起来您使用的是 Windows 和 Python 2.X.使用 os.startfile:
It looks like you're using Windows and Python 2.X. Use os.startfile:
>>> import os
>>> os.startfile(u'Pokémon.mp3')
不直观地,让命令 shell 做同样的事情是:
Non-intuitively, getting the command shell to do the same thing is:
>>> import subprocess
>>> import locale
>>> subprocess.Popen(u'Pokémon.mp3'.encode(locale.getpreferredencoding()),shell=True)
在我的系统上,命令 shell (cmd.exe) 编码是 cp437
,但对于 Windows 程序是 cp1252
.Popen
想要编码为 cp1252
的 shell 命令.这似乎是一个错误,在 Python 3.X 中似乎也已修复:
On my system, the command shell (cmd.exe) encoding is cp437
, but for Windows programs is cp1252
. Popen
wanted shell commands encoded as cp1252
. This seems like a bug, and it also seems fixed in Python 3.X:
>>> import subprocess
>>> subprocess.Popen('Pokémon.mp3',shell=True)
这篇关于subprocess.Popen 带有 unicode 路径的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持编程学习网!
本文标题为:subprocess.Popen 带有 unicode 路径


- 如何使用PYSPARK从Spark获得批次行 2022-01-01
- 计算测试数量的Python单元测试 2022-01-01
- 我如何卸载 PyTorch? 2022-01-01
- CTR 中的 AES 如何用于 Python 和 PyCrypto? 2022-01-01
- 使用公司代理使Python3.x Slack(松弛客户端) 2022-01-01
- 使用 Cython 将 Python 链接到共享库 2022-01-01
- 检查具有纬度和经度的地理点是否在 shapefile 中 2022-01-01
- 我如何透明地重定向一个Python导入? 2022-01-01
- YouTube API v3 返回截断的观看记录 2022-01-01
- ";find_element_by_name(';name';)";和&QOOT;FIND_ELEMENT(BY NAME,';NAME';)";之间有什么区别? 2022-01-01