如何在python中将文件作为参数传递

时间:2019-09-04 04:25:07

标签: 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 == '*.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)

我试图像没有FILE一样传递它,但仅适用于一种,而其他文件类型无法识别。

1 个答案:

答案 0 :(得分:1)

您需要使用fnmatch而不是==来将字符串与glob模式进行比较:

import fnmatch

def run_files():
    if fnmatch.fnmatch(FILE, '*.csv'):
       run_csv()
    elif fnmatch.fnmatch(FILE, '*.txt'):
       run_txt()
    else:
       run_xml()