2016-10-27 3 views
0
import urllib 
import csv 

@manager.command 
def list_routes(): 
    for rule in app.url_map.iter_rules(): 
     options = {} 

    for arg in rule.arguments: 
     options[arg] = "[{0}]".format(arg) 

    url = rule.rule 
    line = urllib.parse.unquote("{}{} ".format(rule.endpoint, url)) 

    with open('urls.cvs', 'a') as out: 
     spamwriter = csv.writer(out, lineterminator='', dialect='excel') 
     spamwriter.writerows(line) 
     spamwriter.writerows('\n') 

rule.endpointとurlに別々の列があるようにcsvファイルを入力する必要があります。Pythonを使用しているCSVファイルの列の値を分割する

+0

:私は実際にファイルに書き込む必要がないように、私はBytesIOを使用しています。 – furas

+1

'writerows'の代わりに' writerows'の代わりに 'writerow'を実行してみましょう。 – roganjosh

答えて

0
import csv 
@manager.command 
def list_routes(): 
    with open('urls.csv', 'w') as out: 
     csv_writer = csv.writer(out, lineterminator='\n') 
     csv_writer.writerows([[rule.endpoint, rule.rule] for rule in app.url_map.iter_rules()]) 
3

writerowsパラメータは、行に含める値のリストのリストである必要があります。したがって、たとえばwriter.writerows([[1, 2], [3, 4]])は2行を追加し、各行には2つの値が含まれます。あなただけの1行を追加すると、あなたはwriterowを使用することができます。ここでは

spamwriter.writerow([rule.endpoint, url]) 

はモックアップです。あなたは間違ったインデントを持って

import csv 
import io 
c = io.BytesIO() 
w = csv.writer(c, lineterminator="", dialect="excel") 
w.writerow(['endpoint', 'url']) 
print(c.getvalue()) # prints: endpoint,url 
+0

' '{}}' '{}} {.format(rule.endpoint、url)結果は1つの列に書かれています – Mark

+0

あなたはあなたが得るものと期待するものをもっと具体的にできますか?私はそれをテストし、それは私のために働くように見えました。 – xZise

関連する問題