それぞれに標準のテンプレートを持つ単一の.xmlファイルを作成したいときは、たびにいくつかの重要なデータが変わります。 これは私がすることができます、少し乱雑です。Python 3.xxで複数のファイルを作成する
私はこのスクリプトを実行し、ユーザーが定義した数のファイル1,10,50,100などを生成するフォルダー(既に設定済み)を持っていますが、各ファイルはfile_001.xml file_002です.xml file_003.xmlなどがあります。 今、私はそれをやり遂げることができるようになりましたが、新しいファイルが必要なたびにスクリプトを実行する必要があります。
私は何かが鮮明に見逃していると感じています。
ここにコードの外観があります。
import random
import time
import glob
import os
import csv
# Importing random names & Sample types
with open('names_m.csv', 'r')as f:
reader = csv.reader(f)
male = list(reader)
with open('names_f.csv', 'r')as f:
reader = csv.reader(f)
female = list(reader)
with open('surnames.csv', 'r')as f:
reader = csv.reader(f)
surname = list(reader)
with open('sampletype.csv', 'r')as f:
reader = csv.reader(f)
stype = list(reader)
# getting today's date to put into line 4,5,6
date = time.strftime("%Y%m%d")
# string_1 Unique reference number
string_1 = random.randrange(1000000000, 9999999999)
# string_2 patient ID number
string_2 = 'P999990'
# string_3 ward selection
string_3 = random.choice(['W1', 'W2', 'F1', 'F2'])
# string_4 date + order number (string_5)
string_4 = date
# string_5 sample order number.
string_5 = random.randrange(00000000, 99999999)
string_6 = random.choice(surname)
string_7 = random.choice(male)
string_9 = random.choice(['M', 'F'])
# string_8 sample type.
string_8 = random.choice(stype)
# HL7 Message.
line1 = "MSH|^~\&|RHM||||||201702141105||ORM^O01|%s|P|2.5||NE|AL|||| \n" % (string_1)
line2 = "PID|1||%s^^^^HOSPITALNO~^^^^NHSNO||%s^%s||190701190000|%s|||||||||||||| \n" % (string_2, string_6, string_7, string_9)
line3 = "PV1|1||%s|||||||||||||||||||||||||||||||||||||||||||||||| \n" % (string_3)
line4 = "ORC|NW|%s%s||%s|||1^^^201702144500^^R||^^^20170214104500^^^^|||Test001||||REASON||||\n" % (string_4, string_5, string_5)
line5 = "OBR|1|%s%s||%s|||2017021411045|201702141045||Test001||||||||||\n" % (string_4, string_5, string_8)
line6 = "OBX|1|ST|%s%s||20170214%s|||||||||||||||\n" % (string_4, string_5, string_5)
line7 = "SPM|1|||||||||||||||||||||||||||||\n"
"""
# How many new files we want creating.
filecopy = input("How many files are to be created?:")
files = filecopy
"""
filecopy = 100
i = 1
while os.path.exists("S360_%s.xml" % i):
i += 1
if i == filecopy:
f.close()
else:
f = open('S360_%s.xml' % i, "w")
f.write(line1 + line2 + line3 + line4 + line5 + line6 + line7)
誰かが解決策を持っていれば、私はすべての耳です。
はまた、ここで私はすでにボーナス質問として、
files = [1] = +1
for files in files:
with open('S360_{}.xml'.format(files), "w") as f:
f.write(line1 + line2 + line3 + line4 + line5 + line6 + line7)
と
os.chdir("C:\\UAT DATA")
for file in glob.glob("*.xml"):
f = open((file.rsplit(".", 1)[0])+"xml", "w")
f.write(line1 + line2 + line3 + line4 + line5 + line6 + line7)
f.close()
そして、もう一つの最終の事を試してみましたが、いくつかの解決策は、誰もが、私はからデータを印刷するときどのように光を当てることができ、あります私の.csvファイルは['Cooper'] ['Raymond']のように表示されます。おかげ
with open('names_m.csv', 'r')as f:
for line in f:
line.strip()
male = list(f)
を見て誰のために (私は:)このCSV部分に修正を発見しました)。
関数内に1つのファイルを作成するコードをカプセル化します。この関数は、ファイル内で一定でないすべてのものを入力として受け入れる必要があります。次に、ループを作成するだけで、繰り返しごとにファイルを作成する関数が呼び出されます。 –
@PatrickHaughあなたの返事をありがとう、無知で許してください。しかし、私はあなたが何を意味するか分かりません。あなたは私のコードブロック52&57の最初のブロックでf = open( "S360 _"(%s) "xml"%i "" w ")を試してみるべきですか? – Lloyd