Python子进程控制Notepad

3

我正在尝试使用popen打开记事本并向其中写入内容,但是我无法理解它。我可以使用以下命令打开记事本:

notepadprocess=subprocess.Popen('notepad.exe')

我正在尝试确定如何使用Python向文本文件中写入任何内容。欢迎任何帮助。


为什么不能直接向文件写入内容? - Ionut Hulub
你不必打开记事本。你可以从Python直接写入文件。 - Ionut Hulub
3
Pywinauto是一个Python库,用于自动化Windows应用程序的GUI测试和操作。它可以模拟用户在桌面上进行的各种操作,并且还支持使用UIAutomation来控制Windows UI元素。该库可用于自动化不同类型的Windows应用程序,包括桌面应用程序、Web浏览器、WPF应用程序等。 - Alex K.
感谢Alex和J.F.,我现在正在看两个选项。 - Bash Noob
显示剩余2条评论
3个回答

2

你可以先将一些内容写入 txt 文件(例如 foo.txt),然后使用记事本打开:

import os

f = open('foo.txt','w')
f.write('Hello world!')
f.close()
os.system("notepad.exe foo.txt")

我可以做到这一点,但我正在尝试使用Python打开一个带有一些文本的记事本。 - Bash Noob
@BashNoob:如果你运行Tim Osadchiy的代码会发生什么?我预计它会打开记事本并显示“Hello world!”文本。你看到了什么? - jfs
@J.F.Sebastian我可以做到这一点,但我发现使用pywinauto更有效率。 - Bash Noob

2
你可能将(文本)文件的概念与处理它们的进程混淆了。
记事本是一个程序,你可以创建一个进程。另一方面,文件只是硬盘上的一个结构。
从编程的角度来看,记事本不编辑文件。它:
- 将文件读入计算机内存 - 修改该内存的内容 - 将该内存写回文件(可以使用相似的名称或其他名称 - 这就是“另存为”操作)。
你的程序和其他任何程序一样,都可以像记事本一样操作文件。特别地,你可以执行与记事本完全相同的序列。
my_file= "myfile.txt"        #the name/path of the file
with open(file, "rb") as f:  #open the file for reading
    content= f.read()        #read the file into memory
content+= "mytext"           #change the memory
with open(file, "wb") as f:  #open the file for writing
    f.write( content )       #write the memory into the file

谢谢您的澄清。我正在尝试完成第三部分。所以这就是我想做的 - 打开记事本并在其中写入一些内容,就像打开cmd提示符并使用popen.communicate发送命令一样。 - Bash Noob

0

从Alex K的评论中找到了确切的解决方案。我使用pywinauto执行了这个任务。


请考虑@Matteo Italia的评论中所说的内容。这也可能适用于您的情况。 - jfs

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接