【问题标题】:Python filewriting with write(), writelines(), to_csv() not working使用 write()、writelines()、to_csv() 的 Python 文件写入不起作用
【发布时间】:2020-11-03 13:24:14
【问题描述】:

我正在运行一段代码,它从一个 txt 文件中获取输入,使用输入来抓取一个 Tor 网页,然后给出一个名为 result 的字符串列表。我正在使用 tbselenium 模块。我需要将此列表写入两个输出文件 valid.txt 和 address.txt,当我运行脚本时,我得到了结果(字符串列表),但没有任何内容写入两个输出文件。没有引发错误,并且两个函数内的打印语句完美运行。输入读取成功

from tbselenium.tbdriver import TorBrowserDriver
import requests
import time
import pandas as pd

def read_input():
    with open('Entries.txt') as fp:
        users = fp.readlines()
    return users

users = read_input()
result = some_function(users) # This function scrapes the webpage using selenium

def write_output(result):
    with open('valid.txt', 'a+') as fw:
        fw.writelines(result)
        print('Writing to valid.txt', result)


def write_addr(result):
    with open('address.txt', 'a+') as fw:
        for x in result:
            fw.write(x.split(':')[5]+'\n')
            print('Writing to address.txt')

write_output(result)
write_addr(result)

然后我尝试将相同的输出写入 csv 文件。

df = pd.DataFrame(result)
print(df)
df.to_csv('valid.csv', mode='a', header=False)

dataFrame 已创建,但没有任何内容写入 csv 文件。如果我还没有在我的文件夹中创建一个,它甚至不会被创建。 如果我不运行抓取功能并尝试将某些内容写入输出文件,那么它可以工作。

【问题讨论】:

    标签: python-3.x selenium-webdriver web-scraping tor file-writing


    【解决方案1】:
    import pandas as pd
    
    def write_output(result):
        with open('valid.txt', 'a+') as fw:
            fw.writelines(result)
            print('Writing to valid.txt', result)
    
    
    def write_addr(result):
        with open('address.txt', 'a+') as fw:
            for x in result:
                fw.write(x.split(':')[5]+'\n')
                print('Writing to address.txt')
    
    result = ['I am :scrap:ed d:ata:from tor wit:h add:ress:es\n', 'I am :scrap:ed d:ata:from tor wit:h add:ress:es\n', 'I am :scrap:ed d:ata:from tor wit:h add:ress:es\n']
    
    write_output(result)
    write_addr(result)
    df = pd.DataFrame(result)
    print(df)
    df.to_csv('valid.csv', mode='a', header=False)
    

    我没有发现您的代码有任何问题(至少没有发现您用于创建 valid.txt、address.txt 和 valid.csv 的写入函数)。 我已经用我自己的虚拟结果测试了你的代码。从所附图像中可以看出,相应的文件已成功创建。我怀疑错误可能来自您的结果列表。您还应该检查以确保 split(':') 之后的第 5 个索引不是空格字符,并注意文件将在打开 python 脚本的目录中创建(如果您正在查找文件错误的目录)。除了这些之外,如果您的结果是从您的网络抓取功能返回的,则所需的功能应该可以正常运行。 干杯

    【讨论】:

    • 感谢您的回复。我得到了正确的结果,并且它被正确地传递给 write_output 函数。当我在不运行代码的硒抓取部分的情况下给出随机结果时,文件被正确写入,否则不会。
    【解决方案2】:

    解决了。在运行 selenium 驱动程序时,它将当前工作目录更改为 tor 浏览器所在的目录,因此所有文件都在 保存在那里。

    【讨论】:

      猜你喜欢
      • 2013-05-15
      • 2018-05-14
      • 1970-01-01
      • 2021-01-31
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多