python中的文件覆盖

python中的文件覆盖,python,file-io,Python,File Io,我正在使用python来抓取网页,并且我正在迭代地这样做——因此我使用3个html文件来存储网页,但不知何故,我发现这些文件没有被覆盖,我仍然得到旧文件。以下是我正在使用的代码: def Vals(a,b): file1="C:\\Users\\YAS_ayush\\Desktop\\dataset_recommendation\\file1.html" file2="C:\\Users\\YAS_ayush\\Desktop\\dataset_recommendation\\f

我正在使用python来抓取网页,并且我正在迭代地这样做——因此我使用3个html文件来存储网页,但不知何故,我发现这些文件没有被覆盖,我仍然得到旧文件。以下是我正在使用的代码:

def Vals(a,b):
    file1="C:\\Users\\YAS_ayush\\Desktop\\dataset_recommendation\\file1.html"
    file2="C:\\Users\\YAS_ayush\\Desktop\\dataset_recommendation\\file22.html"
    file3="C:\\Users\\YAS_ayush\\Desktop\\dataset_recommendation\\file33.html"

    Query1='"http://scholar.google.com/scholar?q=%22'+a+'%22&btnG=&hl=en&as_sdt=0%2C24"'
    URL1='wget --user-agent Mozilla '+Query1+' -O '+file1

    Query2='"http://scholar.google.com/scholar?q=%22'+b+'%22&btnG=&hl=en&as_sdt=0%2C24"'
    URL2='wget --user-agent Mozilla '+Query2+' -O '+file2

    Query3='"http://scholar.google.com/scholar?q=%22'+a+'%22+%22'+b+'%22&btnG=&hl=en&as_sdt=0%2C24"'
    URL3='wget --user-agent Mozilla '+Query3+' -O '+file3
##    print Query1
##    print Query2
##    print Query3
##    
##    print URL1
##    print URL2
##    print URL3


    os.system("wget "+ URL1)
    os.system("wget "+ URL2)
    os.system("wget "+ URL3)

    f1 = open(file1,'r+')
    f2 = open(file2,'r+')
    f3 = open(file3,'r+')

    S1=str(f1.readlines())

    start=S1.find("About")+6
    stop=S1.find("results",start)-1
    try:
        val1=float((S1[start:stop]).replace(",",""))
    except ValueError:
        val1=Reads('C:\\Users\\YAS_ayush\\Desktop\\dataset_recommendation\\file1.html')

    S1=str(f2.readlines())
    #f2.close()
    start=S1.find("About")+6
    stop=S1.find("results",start)-1

    try:
        val2=float((S1[start:stop]).replace(",",""))
    except ValueError:
        val2=Reads('C:\\Users\\YAS_ayush\\Desktop\\dataset_recommendation\\file22.html')

    S1=str(f3.readlines())
    #f3.close()
    start=S1.find("About")+6
    stop=S1.find("results",start)-1
    try:
        val3=float((S1[start:stop]).replace(",",""))
    except ValueError:
        val3=Reads('C:\\Users\\YAS_ayush\\Desktop\\dataset_recommendation\\file33.html')
    f1.truncate()
    f2.truncate()
    f3.truncate()
    f1.close()
    f2.close()
    f3.close()
    return (val1,val2,val3)
有人能告诉我在关闭这些文件时是否有错误,或者我应该如何关闭它们以达到我的目的吗

谢谢

您正在使用-O大写字母O选项,它将所有内容连接到一个文件中

“-O文件” “-output document=file”

这些文档不会写入相应的文件,但所有文档都将连接在一起并写入文件。如果使用“-”作为文件,文档将打印为标准输出,从而禁用链接转换。使用“/-”打印到一个名为“-”的文件中。 “-O”的使用并不意味着简单地“使用名称文件而不是URL中的文件”;相反,它类似于shell重定向:wget-O文件http://foo 旨在像wget-O-http://foo >档案;文件将立即被截断,所有下载的内容都将写入其中

由于这个原因,时间戳检查的“-N”不支持与“-O”结合使用:因为文件总是新创建的,所以它总是有一个非常新的时间戳。如果使用此组合,将发出警告

类似地,将'-r'或'-p'与'-O'一起使用可能不会像您预期的那样工作:Wget不会只将第一个文件下载到文件中,然后将其余文件下载到它们的正常名称中:所有下载的内容都将放在文件中。这在1.11版中被禁用,但在1.11.2版中已恢复,并带有警告,因为在某些情况下,此行为实际上有一定的用途

请注意,只有在下载单个文档时才允许与'-k'组合,因为在这种情况下,它只会将所有相关URI转换为外部URI;'-当多个URI都被下载到一个文件中时,k'对它们没有意义;'-仅当输出为常规文件时,才能使用k'

这段代码摘自


希望这能有所帮助。

看看你的os.system调用的参数。为什么URL和os.system调用中都有wget?我已经纠正了它,但仍然存在问题。当我迭代此代码时,第二个和第三个文件重复相同。但是,如果通过手动调用反复使用此代码,则该调用的输出是正常的。firefox有问题吗?那么您希望open函数中的模式字符串仅为w?如:openfile_1,w?'-o logfile'-output file=logfile'将所有消息记录到日志文件中。这些消息通常会报告给标准错误。”-日志文件''-append output=logfile'追加到日志文件。这与'-o'相同,只是它附加到日志文件,而不是覆盖旧的日志文件。如果日志文件不存在,将创建一个新文件。我想我正在这样做。所以很好,有没有办法从Python模块中实现这一点?