我的程序首先打开一个空白文件,以便稍后进行解析。
proc = subprocess.Popen(['gedit'])
proc.wait()
然后让用户粘贴一个网页的HTML,并保存为。
"first_webpage.html"
在后面的代码中,我把它硬编码成这样的方式,使它打开文件,就像
webHtml = open('first_webpage.html').read()
soup = BeautifulSoup(webHtml, 'html.parser')
我怎样才能使它成为一个文件,无论用户给文件起什么名字,它都会被用于 webHtml
.
我想避免硬编码,因为我想不是每个人都想给文件起同样的名字。
我在想用命令行参数,但不知道这是不是最好的方法。
另外,用户选择的文件名必须以".html
"结尾,以便bs4解析工作。
我的建议是使用像pexpect这样的子进程模块。这允许你在用户与它交互时控制你的子进程(读写和插入)。同样,我也会切换到终端编辑器(或者直接使用终端本身)。这个想法是,编辑器需要在用户关闭后,将文件写入保存的stdout。你可能需要为此写一个自定义函数。一般来说,你需要让子进程回传文件被保存了,以及它被保存在哪里;而要做到这一点,而不强迫你的用户告诉你,将需要一个友好的编辑器。