2017-01-04 5 views
0

Stack_30までStack_1のファイルがいっぱいのフォルダがあります。私はこれらのファイルをすべてこのようなフォルダに入れて、フォルダに整理するためのスクリプトを作りたがっています。pythonを使用して、名前の共通のフレーズ/ナンバーのファイルを同じ番号のファイルに移動し、番号を増やして繰り返します。

各スタックには4つのファイルがあるため、Stack_1.txtStack_1_shifts.txtなどとなります。

私はshutil.moveを使用してスクリプトを作ってみましたが、私は何かの絶対名を使用しないときには、それを好きではない:

import os 
import shutil 
n = 1 
while (n < 30): 
    shutil.move('Stack_'n*, 'stack_'n) 
    n = n+1 

を私はすでにフォルダが作られてきました。どのように自動化された方法でこれを行うためのアドバイスをいただければ幸いです。

+0

を働いていた、それが正しいかどうインデントチェックを修正しました。あなたはあなたの質問をより明確にすることができますか?現在のフォルダ構造とは何ですか?また、希望する出力は何ですか? – MYGz

+0

文字列置換を試しましたか?このように: 'shutil.move( 'Stack_%d'%(n)、 'stack_%d'%(n))'。私はあなたが何かをそれに何も乗算していないので、 'n *'が何についてすべてであるか分かりません。 – coralvanda

答えて

0

問題/タイトルは紛らわしいものですが、私はあなたのために最善を尽くそうとします。

私の理解から

あなたは、ファイルとフォルダを持っている

[ 'stack_1'、 'stack_2'、...、 'stack_30']これらのファイルのそれぞれは、実際に4ある

、stack_1は次のようになります。

'stack_1'、 'stack_1_shift'、 'stack_1_X'、 'stack_1_Y'

そして、あなたは4つのフォルダ、フォルダにEMを移動したい:

'定期的な'、 'シフト'、 'X' 、 'Y '

、ここにあなたがそれを解決する方法ですもしそうなら、私は、それはそれで期待しています:

folders_name_array = [ 'スタック'、 'シフト'、 'X'、 'Y']

for file in glob.glob('*.txt'): if file.endswith('shift'): os.move (file, destination) elif file.endswith('X'): os.move (file, destination2) so on..

0

yesss文字列置換がうまくいきませんでした。私はPythonでうまくいきませんでしたので、*をワイルドカードに使用していました。最後に

import os 
import shutil 

n = 1 

while (n < 30): 
shutil.move('Stack_%d.txt' % (n), 'stack_%d' % (n)) 
shutil.move('Stack_%d_shifts.txt' % (n), 'stack_%d' % (n)) 
shutil.move('Stack_%d.mrc' % (n), 'stack_%d' % (n)) 
shutil.move('Stack_%d.rawtlt' % (n), 'stack_%d' % (n)) 

n = n+1 

関連する問題