如何用python

时间:2015-07-01 10:59:08

标签: python subprocess popen notepad

我有一个.fhx文件,我可以用记事本正常打开,但我想用Python打开它。我已经尝试过subprocess.popen,我上网了但是我一直都遇到错误。我还希望能够像普通文本文件一样读取此文件的内容,就像我们在f = open(“blah.txt”,“r”)和f.read()中所做的那样。任何人都能引导我朝着正确的方向前进吗?

    import subprocess
    filepath = "C:\Users\Ch\Desktop\FHX\fddd.fhx"
    notePath = r'C:\Windows\System32\notepad.exe'
    subprocess.Popen("%s %s" % (notePath, filepath))

3 个答案:

答案 0 :(得分:0)

尝试使用shell=True参数  subprocess.call((notePath,filepath),shell = True)

答案 1 :(得分:0)

通过在文件打开命令中添加encoding =“utf16”解决了我的问题。

    count = 1
    filename = r'C:\Users\Ch\Desktop\FHX\27-ESDC_CM02-2.fhx'
    f = open(filename, "r", encoding="utf16") #Does not work without encoding
    lines = f.read().splitlines()
    for line in lines:
        if "WIRE SOURCE" in line:
            liner = line.split()
            if any('SOURCE="INPUT' in s for s in liner):
                print(str(count)+") ", "SERIAL INPUT = ", liner[2].replace("DESTINATION=", ""))
            count += 1

现在我能够以我想要的方式获取数据。谢谢大家。

答案 2 :(得分:-1)

你应该传递一个args列表:

import subprocess
filepath = r"C:\Users\Ch\Desktop\FHX\fddd.fhx"
notePath = r'C:\Windows\System32\notepad.exe'
subprocess.check_call([notePath, filepath])

如果您想阅读内容,请使用open

打开文件
with open(r"C:\Users\Ch\Desktop\FHX\fddd.fhx") as f:
     for line in f:
        print(line)

如果你没有收到错误,你还需要使用路径的原始字符串来转义f你的文件路径名。

In [1]: "C:\Users\Ch\Desktop\FHX\fddd.fhx"
Out[1]: 'C:\\Users\\Ch\\Desktop\\FHX\x0cddd.fhx'

In [2]: r"C:\Users\Ch\Desktop\FHX\fddd.fhx"
Out[2]: 'C:\\Users\\Ch\\Desktop\\FHX\\fddd.fhx'