簡體   English   中英

如何使用python在其默認程序中打開文件

[英]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.systemsubprocess來做一些手動操作:

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.

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