gpt4 book ai didi

Python:无法使用 os.startfile 启动文件

转载 作者:太空宇宙 更新时间:2023-11-04 03:48:39 25 4
gpt4 key购买 nike

python 2.7

我想用我的操作系统 (Win 7) 为给定文件类型设置的默认应用程序打开一个文件。我正在使用方法 os.startfile。

问题与字符编码有关,我花了几个小时但没有找到解决方案。

# -*- coding: utf-8 -*-
import xml.etree.cElementTree as etree
import os

class Session:
'Session'
def __init__(self, xmlfile):
parser = etree.XMLParser(encoding="utf-8")
self.tree = etree.parse(xmlfile, parser=parser)
self.root = self.tree.getroot()

def get_documents(self):
return self.root.findall('document')

session = Session('sessionutf8.xml')


for doc in session.get_documents():
print doc.text.encode('utf-8')
os.startfile(doc.text.encode('iso 8859-1'))

输入 XML:

<?xml version="1.0" encoding="utf-8"?>
<session>
<name> Statistikk </name>
<document>
C:\Users\Jens\Documents\Vår 2014\TMA4245 Statistikk\Probability &amp; Statistics for Engineers &amp; Scientists (9th Edition) - Walpole.pdf
</document>

输出:

%USERPROFILE%\Documents\My Python scripts\> python session.py

C:\Users\Jens\Documents\Vår 2014\TMA4245 Statistikk\Probability & Statistics for Engineers & Scientists (9th Edition) - Walpole.pdf

Traceback (most recent call last):
File "session.py", line 19, in <module>
os.startfile(doc.text.encode('iso 8859-1'))
WindowsError: [Error 2] The system cannot find the file specified: '\n\t\tC:\\Users\\Jens\\Documents\\V\xe5r 2014\\TMA4245 Statistikk\\Probability & Statistics for Engineers & Scientists (9th Edition) - Walpole.pdf\n\t'
Process python exited with code 1

因此我可以在控制台中正确输出包含字符 'å' 的文件名,但无法以 Windows 接受的方式传递它。

更让人困惑的是下面的代码有效:

book = u'C:\\Users\Jens\Documents\Vår 2014\TMA4245 Statistikk\Probability & Statistics for Engineers & Scientists (9th Edition) - Walpole.pdf'
os.startfile(book.encode('iso 8859-1'))

此代码按预期在 Adob​​e Reader 中打开 pdf 文档(好吧..我现在写完一行代码后并没有真正期待任何东西,主要是希望和祈祷)。

所以我在 encoding() 和 XML 文件中尝试了各种组合 ISO 8859-1、UTF-8。一直在尝试阅读这些内容,但我仍然感到困惑。

请注意,这是我的第一个 Python 程序,我已经用 Java 编程了几年。但是这里可能有一些我不应该做的事情,所以请随时提出其他实现我目标的方法。也就是说,在我的操作系统中设置为默认的任何应用程序中打开一个文件,然后返回到我的程序。没有对新流程或类似内容的引用。只需打开文档并继续。

最佳答案

从你的错误:

cannot find the file specified: '\n\t\tC:\\Users...

注意\n\t\t。从 xml 中提取路径名时,看起来前后的空格都被保留了下来。你应该把它去掉。

os.startfile(doc.text.strip().encode('iso 8859-1'))

关于Python:无法使用 os.startfile 启动文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22461767/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com