2017-02-23 3 views
0

Ich versuche gerade, die Rohdaten aus einer .txt-Datei mit 10 URLs zu extrahieren und die Rohdaten aus jeder Zeile (URL) in die TXT-Datei einzufügen. Und dann wiederholen Sie den Prozess mit den verarbeiteten Daten (die Rohdaten aus der gleichen ursprünglichen TXT-Datei ohne HTML) mit Python.Herunterladen von Daten aus einer .txt-Datei, die wieder URLs mit Python enthält

import commands 
import os 
import json 

# RAW DATA 
input = open('uri.txt', 'r') 
t_1 = open('command', 'w') 
counter_1 = 0 

for line in input: 
    counter_1 += 1 
if counter_1 < 11: 
    filename = str(counter_1) 
    print str(line) 
filename= str(count) 
command ='curl ' + '"' + str(line).rstrip('\n') + '"'+ '> ./rawData/' + filename 

output_1 = commands.getoutput(command) 
input.close() 

# PROCESSED DATA 
counter_2 = 0 
input = open('uri.txt','r') 
t_2 = open('command','w') 
for line in input: 
    counter_2 += 1 
    if counter_2 <11: 
     filename = str(counter_2) + '-processed' 
     command = 'lynx -dump -force_html ' + '"'+ str(line).rstrip('\n') + '"'+'> ./processedData/' + filename 
    print command 
output_2 = commands.getoutput(command) 
input.close() 

Ich versuche, all das mit einem Skript zu tun. Kann mir jemand helfen, meinen Code zu verfeinern, damit ich ihn ausführen kann? Es sollte den Code für jede Art Zeile in der TXT-Datei vollständig durchlaufen. Zum Beispiel sollte ich 1 rohe & 1 verarbeitete TXT-Datei für jede URL-Zeile in meiner TXT-Datei haben.

Antwort

0

Brechen Sie Ihren Code in Funktionen auf. Derzeit ist der Code schwer zu lesen und zu debuggen. Machen Sie eine Funktion namens und eine Funktion namens get_processed(). Dann für Ihre Hauptschleife, können Sie

for line in file: 
    get_raw(line) 
    get_processed(line) 

oder etwas ähnliches. Sie sollten auch vermeiden, magische Zahlen wie counter<11 zu verwenden. Warum ist es 11? Ist es die Anzahl der Zeilen in der Datei? Wenn es ist, können Sie die Anzahl der Zeilen mit len() erhalten.

+0

gibt es 10 Zeilen in der Datei. Ich dachte, es würde anfangen, von 1, 2, ... 10 zu zählen. Ich wollte 10 setzen. – BCarey

+0

Mein Punkt ist, wenn Sie den Wert fest codieren, dann werden Sie nie in der Lage sein, eine Datei mit einer anderen Anzahl von Zeilen zu verarbeiten. Sie sollten sehen, wie viele Zeilen enthalten sind und diese als Anzahl der Iterationen verwenden. –

+0

Ich muss das nur einmal mit einem Dokument machen, von dem ich weiß, wie viele Zeilen darin sind. Ich verstehe, woher du kommst. – BCarey

Verwandte Themen