如何在python中将文件作为参数传递
我在python脚本中传递参数以获取特定文件(如csv、txt或xml)时遇到一些问题 我正在回顾python,希望得到一些反馈,说明为什么在运行以下命令后没有看到任何输出:./my_script some3455.csv如何在python中将文件作为参数传递,python,python-2.7,Python,Python 2.7,我在python脚本中传递参数以获取特定文件(如csv、txt或xml)时遇到一些问题 我正在回顾python,希望得到一些反馈,说明为什么在运行以下命令后没有看到任何输出:./my_script some3455.csv #!/usr/bin/python import sys import csv import xml.etree.ElementTree as ET FILE = str(sys.argv[1]) def run_files(): if FILE == '*.cs
#!/usr/bin/python
import sys
import csv
import xml.etree.ElementTree as ET
FILE = str(sys.argv[1])
def run_files():
if FILE == '*.csv'
run_csv()
elif FILE == '*.txt'
run_txt()
else
run_xml()
def run_csv():
csv_file = csv.register_dialect('dialect', delimiter = '|')
with open(FILE, 'r') as file:
reader = csv.reader(file, dialect='dialect')
for row in reader:
print(row)
def run_txt():
with open(FILE, 'r') as file:
txt_contents = file.read()
print(txt_contents)
def run_xml():
tree = ET.parse(FILE)
root = tree.getroot()
for child in root.findall('Attributes')
car = child.find('Car').text
color = child.find('Color').text
print(car, color)
我试着在没有文件的情况下传递它,但只对一种文件有效,而其他文件类型无法识别 您需要使用
fnmatch
而不是=
将字符串与全局模式进行比较:
import fnmatch
def run_files():
if fnmatch.fnmatch(FILE, '*.csv'):
run_csv()
elif fnmatch.fnmatch(FILE, '*.txt'):
run_txt()
else:
run_xml()
那么,你的问题到底是什么?TODOs部分,如何基于csv信息在目录或子目录中的文件中写入或附加清单,然后输出这些文件与在这些目录或子目录中创建的清单的比较如果有重复的,修改文件,例如,我建议你试着写一个解决方案,如果你遇到了实际问题,那么就针对这些问题提出有针对性的问题。您在这里共享的代码只设置了这种情况,但没有提供您实际需要的解决方案的任何部分-StackOverflow不是向人们征求关于库的建议或为您编写软件的合适地方。我过去曾给出过很好的反馈,特别是如果我再次刷新一种语言,不要为我写软件。你误解了我的意图。抱歉,但你相当清楚地回答了我之前的问题,表明你在问人们你应该如何编写软件来完成某项工作。这听起来很像是问人们推荐什么软件,或者为你写点什么。我怎么会误解呢?除了解决这个问题之外,我还将
FILE
作为参数传递给run\u
函数,并将FILE
作为run\u files
函数的局部变量进行替换。@Grismar我同意将此脚本用作模块。