0
このpythonスクリプトを別のpythonスクリプトファイルから呼び出すとします。生成される出力は、パラメータとして渡されるファイルに書き込まれる必要があります。どうすればいい?私は初心者であり、軽微な細部に感謝します。ありがとう。XMLパーサから動的に作成されたファイルに出力を書き込む
PS:問題はファイルに書き込むのではなく、出力ファイルの名前を引数として渡してTHAT filleに書き込むことです。ここで
コードです:
import xml.sax
class MovieHandler(xml.sax.ContentHandler):
def __init__(self):
self.CurrentData = ""
self.type = ""
self.format = ""
self.year = ""
self.rating = ""
self.stars = ""
self.description = ""
# Call when an element starts
def startElement(self, tag, attributes):
self.CurrentData = tag
if tag == "movie":
print "*****Movie*****"
title = attributes["title"]
print "Title:", title
# Call when an elements ends
def endElement(self, tag):
if self.CurrentData == "type":
print "Type:", self.type
elif self.CurrentData == "format":
print "Format:", self.format
elif self.CurrentData == "year":
print "Year:", self.year
elif self.CurrentData == "rating":
print "Rating:", self.rating
elif self.CurrentData == "stars":
print "Stars:", self.stars
elif self.CurrentData == "description":
print "Description:", self.description
self.CurrentData = ""
# Call when a character is read
def characters(self, content):
if self.CurrentData == "type":
self.type = content
elif self.CurrentData == "format":
self.format = content
elif self.CurrentData == "year":
self.year = content
elif self.CurrentData == "rating":
self.rating = content
elif self.CurrentData == "stars":
self.stars = content
elif self.CurrentData == "description":
self.description = content
if (__name__ == "__main__"):
# create an XMLReader
parser = xml.sax.make_parser()
# turn off namepsaces
parser.setFeature(xml.sax.handler.feature_namespaces, 0)
# override the default ContextHandler
Handler = MovieHandler()
parser.setContentHandler(Handler)
parser.parse("movies.xml")
私は
def __init__(self, output_file):
----do something----
として__init__functionを変更し、arguementとして出力ファイルを渡すことを試みました。
して、以下のようにシステムコールとしてスクリプトを呼び出す:私はむしろグローバル変数を持っているか、return文、その後、これを処理し、システムコールを行うファイルに書き込みます
os.system("script.py" "output_file")
。どうすればいい?
あなたはfd = open(output_file、 "a")、fd.write(string_to _write)のようなファイルに内容を書き込むために単純な文字列とファイル書き込みを使用してから、ファイルポインタをフラッシュして閉じるそれ。あなたのコンテンツはファイルに書き込まれます。 – sagar
@sagar、私は引数として出力ファイルの名前を渡す必要があります。それが私の問題です。 – RowenaRavenclaw
問題ありませんsys.argv [0]はあなたのpythonファイル名です、sys.argv [1]はあなたが渡す引数です。 sysモジュールを使用できるかどうかを確認してください。 import sys、sys.argv [1]はPythonファイルの第1引数です。例: "python script.py path_to_output_file"そしてsys.argv [1]はpath_to_output_fileです。したがって、 "class MovieHandler"では、__ init __(self、outputfile) - > self.outputfile = outputfileのようなクラス変数を初期化します。 – sagar