gpt4 book ai didi

python - 无法在 Linux 上用 Python 打开具有完整路径名的文件

转载 作者:塔克拉玛干 更新时间:2023-11-03 01:53:45 24 4
gpt4 key购买 nike

我最近安装了 Ubuntu 以与我的 Windows 操作系统一起运行。我想看看某个脚本在 Ubuntu 中是如何运行的,并且它在大多数情况下运行良好。我的代码中有这一部分引起了麻烦。我尝试使用 os.system('gnome-open ' + filePath) 命令打开一个文件,但我不能让它打开一个文件,除非我只指定文件名而不是目录(即我必须说“数据.txt”,我不能说“home/user/workspace/project/src/data.txt”,因为它会说文件/目录不存在)。我还为测试目的制作了该文件的多个副本,其中一些文件的名称中有括号,当我尝试打开这些文件时,我收到错误消息“sh:语法错误:”(“意外”并且它没有指定行代码,所以我假设它是调用此函数时访问的行。下面是我引用的代码。

def openFileOfItem(self, row):
print fileList[row]
if platform.system() == "Windows":
os.startfile(fileList[row])
else:
if platform.system() == "Linux":
os.system('gnome-open ' + nameList[row])
else:
os.system('open %s' % fileList[row])

和一些示例输出:

/home/damian/workspace/Kde Gen/src/data.txt
Error showing url: Error stating file '/home/damian/workspace/Kde': No such file or directory
/home/damian/workspace/Kde Gen/src/data (copy).txt
sh: Syntax error: "(" unexpected

最佳答案

您将字符串直接转储到命令行而不进行转义 - 当 shell 尝试执行您提供给它的命令时,这会导致错误。您需要先转义文件路径。由于您使用的是 Python 2.7,请尝试使用 pipes.quote

from pipes import quote

def openFileOfItem(self, row):
print fileList[row]
if platform.system() == "Windows":
os.startfile(fileList[row])
else:
if platform.system() == "Linux":
os.system('gnome-open %s' % quote(nameList[row]))
else:
os.system('open %s' % quote(fileList[row]))

关于python - 无法在 Linux 上用 Python 打开具有完整路径名的文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9652288/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com