1

この質問で申し訳ありませんが、これが繰り返し発生するトピックであることはわかっていますが、問題を解決することはできません。実際、これは簡単に説明できます。実行の出力をそのままファイルに書き込みたいのです。つまり、私はこのような出力を持っています(混乱してすみません):

.251.242.133|:80... connected.\r\nHTTP request sent, awaiting response... 200 OK\r\nLength: 2371567 (2.3M) [application/x-gzip]\r\nSaving to: `110907_ERP000591.tar.gz\'\r\n\r\n\r 0% [                                       ] 0           --.-K/s              \r 0% [                                       ] 23,003       104K/s              \r 3% [>                                      ] 82,863       184K/s              \r 8% [==>                                    ] 192,363      282K/s              \r15% [=====>                                 ] 371,943      411K/s              \r26% [=========>                             ] 634,175      563K/s              \r39% [==============>                        ] 925,283      680K/s              \r52% [===================>                   ] 1,250,295    790K/s              \r63% [=======================>               ] 1,497,035    830K/s              \r73% [===========================>           ] 1,732,663    861K/s              \r81% [==============================>        ] 1,937,063    867K/s              \r88% [=================================>     ] 2,099,123    855K/s              \r95% [====================================>  ] 2,268,483    847K/s              \r100%[======================================>] 2,371,567    849K/s   in 2.7s    \r\n\r\n2012-11-01 15:34:10 (849 KB/s) - `110907_ERP000591.tar.gz\' saved [2371567/2371567]\r\n\r\n110907_ERP000591/\r\n110907_ERP000591/1_110907_ERP000591_2_fastq.txt\r\n110907_ERP000591/1_110907_ERP000591_1_fastq.txt\r\n/home/travis/opt/bcbb/nextgen/tests/data/automated/../100326_FC6107FAAXX\r\n--2012-11-01 15:34:10--  http://chapmanb.s3.amazonaws.com/100326_FC6107FAAXX.tar.gz\r\nResolving chapmanb.s3.amazonaws.com (chapmanb.s3.amazonaws.com)... 205.251.242.133\r\nConnecting to chapmanb.s3.amazonaws.com (chapmanb.s3.amazonaws.com)|205.251.242.133|:80... connected.\r\nHTTP request sent, awaiting response... 200 OK\r\nLength: 7014592 (6.7M) [application/x-gzip]\r\nSaving to: `100326_FC6107FAAXX.tar.gz\'\r\n\r\n\r 0% [                                       ] 0           --.-K/s              \r 0% [                                       ] 17,163      77.9K/s              \r 0% [                                       ] 64,775       147K/s              \r 2% [                                       ] 174,843      263K/s              \r 5% [=>                                     ] 399,683      456K/s              \r12% [===>                                   ] 866,883      790K/s              \r25% [========>                              ] 1,798,363   1.33M/s              \r45% [================>                      ] 3,178,955   1.90M/s              \r65% [========================>              ] 4,592,803   2.41M/s              \r65% [========================>              ] 4,629,303   2.17M/s              \r67% [=========================>             ] 4,761,595   2.02M/s              \r74% [============================>          ] 5,245,423   2.03M/s              \r83% [===============================>       ] 5,862,435   2.08M/s              \r100%[======================================>] 7,014,592   2.46M/s   in 2.7s    \r\n\r\n2012-11-01 15:34:13 (2.46 MB/s) - 

ご覧のとおり、奇妙な形式の出力があります。これは、ターミナルに次のように表示されます。


/home/travis/opt/bcbb/nextgen/tests/data/automated/../100326_FC6107FAAXX
--2012-11-01 15:34:10--  http://chapmanb.s3.amazonaws.com/100326_FC6107FAAXX.tar.gz
Resolving chapmanb.s3.amazonaws.com (chapmanb.s3.amazonaws.com)... 205.251.242.133
Connecting to chapmanb.s3.amazonaws.com (chapmanb.s3.amazonaws.com)|205.251.242.133|:80... connected.
HTTP request sent, awaiting response... 200 OK
Length: 7014592 (6.7M) [application/x-gzip]
Saving to: `100326_FC6107FAAXX.tar.gz'

100%[======================================>] 7,014,592   2.46M/s   in 2.7s    

2012-11-01 15:34:13 (2.46 MB/s) - `100326_FC6107FAAXX.tar.gz' saved [7014592/7014592]

はるかに良い...この形式でファイルに出力を書き込みたいので、\ r \ nなどを削除することはできません。これは、ダウンロードの進行中の各ステップに1行ずつ表示されるためです。最終出力のファイルを書きたいだけです。

何か助けはありますか?

編集:

申し訳ありませんが、もっと明確にすべきでした。これはコマンドの結果ではなく、以下にコメントするように、jsonファイルの解析の結果です。出力を再現できます。


import urllib
import json

string_to_write = json.loads(urllib.urlopen('https://travis-ci.org/jobs/3019024.json').read())['log']
4

3 に答える 3

1

これは機能するはずです:

re.sub(r"(?m)^.*\r(?!$)", "", text)

(?m)フラグは、これが複数行の正規表現であることを示しているため、テキスト全体ではなく、各行の最初と最後に一致します^$

したがって、テキストにCRLF改行が含まれている場合のように、改行の直後に改行が続く場合を除いて、改行を含む改行を含むすべて.*の行を照合します。そして、一致を空の文字列に置き換えます。^\r(?!$)

于 2012-11-02T14:41:35.180 に答える
0

*NIXシステムを使用しているようです。この出力がコマンドラインで実行することによって生成される場合progn(実際にはそうなる可能性がありますpython myscript.py)、これと同じくらい簡単に行うことができます。

progn > logfile

このように、の出力は文字を削除せずprognにに保存されます。logfile

于 2012-11-02T14:32:35.873 に答える
0

ターミナルに隠されているものを削除したい場合は、これを試すことができます->

# t is your text
''.join([i for i in t.split('\r') if i.startswith('\n') or i.startswith('100%')])

解決策はトリッキーですが(!)、おそらくうまくいくと思います。

于 2012-11-02T16:05:48.953 に答える