如何知道我的cmd命令是否仍然在python中工作

时间:2018-01-26 13:50:20

标签: python python-3.x scrapy scrapy-spider

我已经收集了一大堆文本(在线报纸网站),通过使用Scrapy Framework进行抓取,我已经存储在&nbspidd.txt'文件。 txt文件大小差不多是240MB。

现在在这个txt文件中,我有几个字冗余。例如,单词' love'可以在该txt文件中看到多行。但是,我只需要一个单词' love'

我使用以下代码从我的大型&nbspidd.txt'中删除了冗余。文件。

file_object = open("nahidd.txt", "r", encoding='utf-8-sig')
file_object_all_text = file_object.read().split()
file_object_redundancy_removed = " ".join(sorted(set(file_object_all_text), key=file_object_all_text.index))
file_object = open("nahidd_pure.txt", "w", encoding='utf-8-sig')
file_object.write(file_object_redundancy_removed)

但问题是每当我在cmd中输入一个命令时。

  

scrapy runspider nahidBot.py

它工作得很好,但它需要永远(因为文件大小很大),我看到一个光标闪烁几个小时。很难理解我的命令是否仍然有效或者被绞死了。我只需要在cmd中显示某种文本,就像第1行处理过的','第2行处理过的'或完成的背景工作的百分比。这样任何人都可以理解剩下多少工作或理解我的命令仍在工作。

提前致谢。 纳希德

1 个答案:

答案 0 :(得分:0)

此行执行sort

file_object_redundancy_removed = " ".join(sorted(set(file_object_all_text), key=file_object_all_text.index))

但在密钥中使用线性搜索,这对性能非常不利。

如果您不需要保留订单,请执行以下操作:

file_object_redundancy_removed = sorted(set(file_object_all_text))

如果您需要保留订单"正在发生",您尝试使用sort进行模拟,更快捷的方法是将您已遇到的字词存储在辅助集:

marker = set()
file_object_redundancy_removed = []
for w in file_object_all_text:
   if w not in marker:
      marker.add(w)
      file_object_redundancy_removed.append(w)

现在您已经删除了冗余列表,并保留了第一个单词出现的顺序。