簡體   English   中英

從 python 運行 shell 打開文件

[英]Run shell from python to open a file

嘗試使用 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.

我能怎么做?

由於反斜杠是 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

對於您的提示,請嘗試像這樣打開更改路徑,因為空間會導致 pb。

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM