[英]How to open a file in its default program with python
我想在python 3.5的默認應用程序中打開文件,特別是在記事本中打開“ screen.txt”。
我已經搜索了互聯網,並在大多數答案中找到了os.startfile(path)
。 我用文件路徑os.startfile(C:\\[directories n stuff]\\screen.txt)
嘗試了此操作,但是它返回一個錯誤,提示“行繼續符后出現意外字符”。 我試過沒有文件路徑,只是文件名,但仍然無法正常工作。
這個錯誤是什么意思? 我從未見過。
請提供打開有效的.txt文件的解決方案。
編輯:我在受限(學校)計算機上的Windows 7上。
很難從您的問題確定當前的立場,但是我敢打賭您的問題是反斜杠 。
[編輯添加:]或者實際上也許更簡單一些。 您是否在路徑名兩邊加上了引號? 如果沒有,那肯定是行不通的-但是一旦您這樣做,您就會發現您需要我在下面寫的其余內容。
在Windows文件系統中,反斜杠\\
是分隔目錄的標准方法。
在Python字符串文字中,反斜杠\\
用於將東西放入否則很難輸入的字符串中。 例如,如果您正在編寫單引號字符串,並且希望在其中使用單引號,則可以執行以下操作: 'don\\'t'
。 或者,如果您想要換行符,則可以執行以下操作: 'First line.\\nSecond line.'
因此,如果您采用Windows路徑名並將其插入Python,如下所示:
os.startfile('C:\foo\bar\baz')
那么實際傳遞給os.startfile
的字符串將不包含那些反斜杠; 它將包含一個換頁字符(來自\\f
)和兩個退格字符(來自\\b
),這根本不是您想要的。
您可以通過三種方式處理此問題。
您可以使用正斜杠代替反斜杠。 盡管Windows在其用戶界面中更喜歡反斜杠,但是正斜杠也可以工作,並且它們在Python字符串文字中沒有特殊含義。
您可以“轉義”反斜杠:連續兩個反斜杠表示實際的反斜杠。 os.startfile('C:\\\\foo\\\\bar\\\\baz')
您可以使用“原始字符串文字”。 在單引號或雙引號前加上r
。 這將使反斜杠不會被特別解釋。 os.startfile(r'C:\\foo\\bar\\baz')
最后一個也許是最好的, 除了一個令人討厭的怪癖:反斜杠引號在原始字符串文字中仍然很特殊,因此您仍然可以說'don\\'t'
,這意味着您不能用a 結束原始字符串文字。反斜杠。
建議使用默認程序打開文件的方式是os.startfile
。 不過,您可以使用os.system
或subprocess
來做一些手動操作:
os.system(r'start ' + path_to_file')
要么
subprocess.Popen('{start} {path}'.format(
start='start', path=path_to_file), shell=True)
當然,這不能跨平台工作,但是對於您的用例來說可能就足夠了。
例如,我在驅動器D:上創建了文件"test file.txt"
,因此文件路徑為'D:/test file.txt'
現在,我可以使用該腳本通過關聯的程序打開它:
import os
os.startfile('d:/test file.txt')
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.