我想从另一个python脚本文件中调用这个python脚本。生成的输出需要写入作为参数传递的文件。我怎么能这样做?我是一名初学者,非常感谢细节。感谢。
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")
我试图将__init__功能修改为
def __init__(self, output_file):
----do something----
并将输出文件作为争论传递。
然后将脚本调用为系统调用,如下所示:
os.system("script.py" "output_file")
我宁愿拥有全局变量或返回语句,然后处理它并写入执行系统调用的文件。我怎么能这样做?
答案 0 :(得分:1)
You can import sys module and use it.
sys.argv[] holds the command line arguments passed to the python interpreter.
sys.argv[0] is your python file name.
sys.argv[1] is the path to the output file you want to write.
From the main method you can pass this sys.argv[1] to class MovieHandler.
Below is the sample to how to call the python file from other python script and also how to pass the command line argument:
From the other file to call your python script:
import os, sys
os.system("python /pathto/script.py /pathto/output_file")
In your python script:
class MovieHandler:
def __init__(self, outputfile):
self.outputfile = outputfile
if __name__ == "__main__":
movieHandlerObj = MovieHandler(sys.argv[1])