如何使用python

时间:2016-05-23 11:32:01

标签: python windows file python-3.x text

我想在默认应用程序中打开python 3.5中的文件,特别是' screen.txt'在记事本中。

我搜索了互联网,并在大部分答案中找到了os.startfile(path)。我尝试使用文件的路径os.startfile(C:\[directories n stuff]\screen.txt),但它返回了一个错误,说明在行继续符号后的意外字符'。我在没有文件路径的情况下尝试了它,只是文件的名称,但它仍然没有用。

这个错误是什么意思?我以前从未见过它。

请提供打开有效的.txt文件的解决方案。

编辑:我在限制(学校)计算机上使用Windows 7。

3 个答案:

答案 0 :(得分:4)

很难确定你的问题,但我打赌你的问题是反斜杠

[编辑添加:]或者实际上也许它更简单。你有没有在你的路径名附近加上引号?如果没有,那肯定不行 - 但是一旦你这样做,你会发现那时你需要我在下面写的其余内容。

在Windows文件系统中,反斜杠\是分隔目录的标准方法。

在Python字符串文字中,反斜杠\用于将字符串放入字符串中,否则很难输入。例如,如果您正在编写单引号字符串并且希望在其中包含单引号,则可以执行以下操作:'don\'t'。或者,如果您想要换行符,可以执行以下操作:'First line.\nSecond line.'

因此,如果您使用Windows路径名并将其插入Python,请执行以下操作:

os.startfile('C:\foo\bar\baz')

然后实际传递给os.startfile的字符串将不包含那些反斜杠;它将包含一个换页符(来自\f)和两个退格符(来自\b s),这根本不是你想要的。

你可以通过三种方式解决这个问题。

  • 您可以使用正斜杠而不是反斜杠。虽然Windows在其用户界面中更喜欢反斜杠,但正斜杠也起作用,并且它们在Python字符串文字中没有特殊含义。

  • 你可以“逃避”反斜杠:连续两个反斜杠意味着一个实际的反斜杠。 os.startfile('C:\\foo\\bar\\baz')

  • 您可以使用“原始字符串文字”。在打开单引号或双引号之前加r。这将使得反斜杠不会被特别解释。 os.startfile(r'C:\foo\bar\baz')

最后一个可能是最好的,除了一个恼人的怪癖:反斜杠 - 引用在原始字符串文字中仍然是特殊的,这样你仍然可以说'don\'t',这意味着你可以't 结束带有反斜杠的原始字符串文字。

答案 1 :(得分:0)

例如我在驱动器D上创建了文件"test file.txt":因此文件路径为'D:/test file.txt' 现在我可以使用该脚本的相关程序打开它:

import os
os.startfile('d:/test file.txt')

答案 2 :(得分:0)

使用默认程序打开文件的推荐方法是os.startfile。您可以使用os.systemsubprocess执行更多手动操作:

os.system(r'start ' + path_to_file')

subprocess.Popen('{start} {path}'.format(
    start='start', path=path_to_file), shell=True)

当然,这不会跨平台工作,但对于您的用例可能已经足够了。