Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/318.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何处理用户创建的文件的caer案例错误_Python - Fatal编程技术网

Python 如何处理用户创建的文件的caer案例错误

Python 如何处理用户创建的文件的caer案例错误,python,Python,我正在从文件“data_file.txt”中获取一些信息,这是一个由最终用户创建的文件,但是如果用户使用不同的案例创建它,例如data_file.txt或data_file.txt等等……我如何在脚本中注意适应这种案例不匹配情况 def getAU (aufilename): file = open(aufilename,'r') return file.read() def main (): aufilename="data_file.txt" #ROOT_D

我正在从文件“data_file.txt”中获取一些信息,这是一个由最终用户创建的文件,但是如果用户使用不同的案例创建它,例如data_file.txt或data_file.txt等等……我如何在脚本中注意适应这种案例不匹配情况

def getAU (aufilename):
    file = open(aufilename,'r')
    return file.read()

def main ():
    aufilename="data_file.txt"
    #ROOT_DIR - The reference android build used to make the builds
    AU=getAU(aufilename)
    ROOT_DIR= "/local/mnt/workspace/username/LA_CI/" + AU
    print ROOT_DIR

if __name__ == '__main__':
    main()

使用
os.listdir()
获取预期位置的文件列表,然后将每个文件的文件名平铺为小写,并与
的“data\u file.txt”
进行比较。但是,请注意,在文件大小写非常重要的系统上,您可能会找到
Data_file.txt
Data_file.txt
,您需要仔细考虑如何处理这种情况--打开任意一个,打开两个中最近的一个,或报告错误?

使用
os.listdir()
获取预期位置的文件列表,然后针对每个文件,将文件名平铺为小写,并与
的“data\u file.txt”
进行比较。但是,请注意,在文件大小写非常重要的系统上,您可能会找到
Data_file.txt
Data_file.txt
,您需要仔细考虑如何处理这种情况--打开任意一个,打开两个中最近的一个,或者报告错误?

除非文件系统使用不区分大小写的文件名,否则不能不考虑文件名的大小写而直接打开文件。尝试以下方法:

import os
def case_insensitive_open(filename, mode='r'):
    dir = os.path.dirname(filename)
    for potential_match in os.listdir(dir):
        if potential_match.lower() == filename.lower():
             return open(os.path.join(dir, potential_match), mode)
    else:
        return open(potential_match, mode)

如果到达
else
子句,这将引发
IOError
,除非您打开文件进行写入,就像常规的
open()
调用一样。

除非文件系统使用不区分大小写的文件名,否则您不能简单地打开文件而不考虑文件名的大小写。尝试以下方法:

import os
def case_insensitive_open(filename, mode='r'):
    dir = os.path.dirname(filename)
    for potential_match in os.listdir(dir):
        if potential_match.lower() == filename.lower():
             return open(os.path.join(dir, potential_match), mode)
    else:
        return open(potential_match, mode)
如果它到达
else
子句,这将引发一个
IOError
,除非您打开文件进行写入,就像常规的
open()
调用一样。

看看,
不敏感的\u glob()
应该对您有帮助。看看,
不敏感的\u glob()
应该对您有帮助。