1

だから私はPythonにかなり慣れていないので、簡単な解決策を求めてWebとスタックオーバーフローを精査しました。私が見つけた解決策がうまくいくと確信しています。しかし、私が必要としているもののコンテキストに他の人々のソリューションを実装するのに苦労しています.

「projStorage」変数の複数のサブディレクトリにコピーできたテンプレートファイルがあります。

例えば

+ proj\Storage\dir
   + Seq1
       + template.file >> which I want to rename to >> Seq1_stringHere.File
   + Seq2
       + template.file >> Seq2_stringHere.File
   + Seq3
       + template.file >> Seq3_stringHere.File

問題は、コピー先のディレクトリに基づいてテンプレート ファイルの名前を変更したいことです。これを行うために、各テンプレートファイルのリストを返すことを望んでいた os.listdir(seqFileList) を実行していたので、Seq ディレクトリ名 + 文字列形式に名前を変更できました。

forループを使用してこれを行いました。これで、「seqFileList」が proj\Storage\Dir 内の各フォルダーに対して listdir() を実行し、ファイルのリストを返していることがわかりました。「リストを平坦化する」という解決策を見てきましたが、それがどのように機能するのかよくわかりません。seqFileList を印刷すると、次のようなものが返されます。

['Template.file']
['Template.file']
['Template.file']

私が欲しいのはいつ

['Template.file','Template.file','Template.file',] 

名前を変更できるように

['Seq01_strHere.File','Seq02_strHere.File','Seq03_strHere.File',]

また、コードの名前変更部分がまだ実装されていないことも承知しています。どうすればよいかわかりません。1 つの解決策が os.rename() であることは知っていますが、これを適切に実装する場所がわかりません。

この質問はおそらく新しいものではなく、一部の人にとっては非常に簡単であることを理解しています. 私は本当に自分自身のためにこのことを内面化しようとしているので、「ヘルプヴァンパイア」になろうとしているわけではありません. だから、私の新しさを許してください。ありとあらゆる解決策を歓迎します。

わかりやすくするために、ファイル パスとプロジェクト名を置き換えました。

前もって感謝します。

import os, shutil

 projTemplate = 'Path\\To\\Template.file'

 projStorage = 'Proj\\Storage\\dir' 

 projSeqs = os.listdir(projStorage)

 for seqs in projSeqs:
  seqFileDir = os.path.join(projStorage, seqs)     
  shutil.copy2(projTemplate, seqFileDir)               
  seqFileList = os.listdir(seqFileDir)

  print seqFileDir
4

2 に答える 2

1

サブフォルダーにテンプレートをコピーしている時点で名前を変更してみませんか?

for seqs in projSeqs:
    seqFileDir = os.path.join(projStorage, seqs)
    seqFileTemplate = os.path.join(seqFileDir, '%s_stringHere.File' % seqs)
    shutil.copyfile(projTemplate, seqFileTemplate)
    shutil.copystat(projTemplate, seqFileTemplate)         
于 2012-08-27T03:18:17.987 に答える
0
import os,shutil
projTemplate = '/Path/To/Template.file'
projStorage = '/Proj/Storage/dir'
[shutil.copy2(projTemplate, os.path.join(projStorage,dir,dir+"_stringHere.file")) 
            for dir in os.listdir(projStorage)]
于 2012-08-27T03:34:56.767 に答える