【问题标题】:Run shell from python to open a file从 python 运行 shell 以打开文件
【发布时间】:2021-12-09 14:03:33
【问题描述】:

尝试使用 shell 打开文件:

os.system("G:\Folder\2. Cntry\ACCD.accdb")

抛出以下错误:

'G:\Folder.' is not recognized as an internal or external command,

可运行的程序或批处理文件。

但是,当我将"G:\Folder\2. Cntry\ACCD.accdb" 粘贴到 cmd 提示符时,它确实会打开文件。

似乎\2 被读作

但使用:

os.system(r"G:\Folder\2. Cntry\ACCD.accdb")

返回:

'G:\Folder\2.' is not recognized as an internal or external command,
operable program or batch file.

我该怎么办?

【问题讨论】:

  • @Cal-cium 很遗憾,不......谢谢你尝试
  • 我用this回答

标签: python shell


【解决方案1】:

由于反斜杠是 Python 中的转义字符,您可以:

  • 使用原始字符串:r"G:\Folder\2. Cntry\ACCD.accdb"
  • 使用正斜杠:"G:/Folder/2. Cntry/ACCD.accdb"
  • 转义反斜杠:"G:\\Folder\\2. Cntry\\ACCD.accdb"

适用于任何subprocess 函数。

使用os.system,您需要传递另外用单引号括起来的路径:

import os
import subprocess

paths = (
    [r"C:\Temp\2. Cntry\executer.exe", r'"C:\Temp\2. Cntry\executer.exe"'],
    ["C:/Temp/2. Cntry/executer.exe", '"C:/Temp/2. Cntry/executer.exe"'],
    ["C:\\Temp\\2. Cntry\\executer.exe", '"C://Temp//2. Cntry//executer.exe"'],
)

for p1, p2 in paths:
    subprocess.call(p1)
    os.system(p2)

输出:

Arguments passed:
C:\Temp\2. Cntry\executer.exe
done
Arguments passed:
C:\Temp\2. Cntry\executer.exe
done
Arguments passed:
C://Temp//2. Cntry//executer.exe
done
Arguments passed:
C://Temp//2. Cntry//executer.exe
done
Arguments passed:
C:\Temp\2. Cntry\executer.exe
done
Arguments passed:
C://Temp//2. Cntry//executer.exe
done

【讨论】:

  • 谢谢,但它不能解决......同样的问题。输出与我使用 os.system(r"G:\Folder\2. Cntry\ACCD.accdb") 时相同
  • 我用this回答
【解决方案2】:

为您的提示,尝试打开更改路径这样,因为空间导致pb。

G:\Folder\"2. Cntry"\ACCD.accdb

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-11-16
    • 1970-01-01
    • 1970-01-01
    • 2019-01-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多