0

最後に「* .tmp」を追加したい複数の行(それぞれに異なるが似ている)を含む.txtファイルがあります。

これを行うためにpython2.7正規表現を使用しようとしています。

Pythonスクリプト用に私が持っているものは次のとおりです。

import sys
import os
import re
import shutil

#Sets the buildpath variable to equal replace one "\" with two "\\" for python code to input/output correctly
buildpath = sys.argv[1]
buildpath = buildpath.replace('\\', '\\\\')

#Opens a tmp file with read/write/append permissions
tf = open('tmp', 'a+')

#Opens the selenium script for scheduling job executions
with open('dumplist.txt') as f:
#Sets line as a variable for every line in the selenium script
    for line in f.readlines():
    #Sets build as a variable that will replace the \\build\path string in the line of the selenium script
        build = re.sub (r'\\\\''.*',''+buildpath+'',line)
        #Overwrites the build path string from the handler to the tmp file with all lines included from the selenium script
        tf.write(build)
#Saves both "tmp" file and "selenium.html" file by closing them
tf.close()
f.close()
#Copies what was re-written in the tmp file, and writes it over the selenium script
shutil.copy('tmp', 'dumplist.txt')
#Deletes the tmp file
os.remove('tmp')
#exits the script
exit()

行を置き換える前の現在のファイル:

\\server\dir1\dir2\dir3

DUMP3f2b.tmp   
           1 File(s)  1,034,010,207 bytes

\\server\dir1_1\dir2_1\dir3_1

DUMP3354.tmp   
           1 File(s)    939,451,120 bytes

\\server\dir1_2\dir2_2\dir3_2

文字列置換後の現在のファイル:

\*.tmp

DUMP3f2b.tmp   
           1 File(s)  1,034,010,207 bytes

\*.tmp

DUMP3354.tmp   
           1 File(s)    939,451,120 bytes

\*.tmp

文字列を置き換えた後の目的のファイル:

\\server\dir1\dir2\dir3\*.tmp

DUMP3f2b.tmp   
           1 File(s)  1,034,010,207 bytes

\\server\dir1_1\dir2_1\dir3_1\*.tmp

DUMP3354.tmp   
           1 File(s)    939,451,120 bytes

\\server\dir1_2\dir2_2\dir3_2\*.tmp

誰かがこれを解決するのを手伝ってくれたら、それは素晴らしいことです。ありがとう :)

4

1 に答える 1

1

キャプチャ グループを使用する必要があります。

>>> import re
>>> s = "\\server\dir1\dir2\dir3"
>>> print re.sub(r'(\\.*)', r'\\\1\*.tmp', s)
\\server\dir1\dir2\dir3\*.tmp

次に、次のようにbuild = re.sub (r'\\\\''.*',''+buildpath+'',line)行を変更します。

build = re.sub (r'(\\.*)', r'\\\1%s' % buildpath, line)

また、 を呼び出すべきではなくreadlines()、単に反復処理を行うだけfです:

for line in f:
于 2013-08-29T22:00:48.250 に答える