1

我正在尝试编写一个函数,该函数在当前目录及其子文件夹中查找特定文件的第一个实例,并将相对路径作为字符串返回。

def findFirstMatch(targetFile):
    try:
        fileMatched = []
        for root, dirnames, filenames in os.walk('.'):
            for filename in fnmatch.filter(filenames, targetFile):
                fileMatched.append(os.path.join(root, filename))
            if len(fileMatched) != 0:
                fileMatched = str(fileMatched)
                return fileMatched
        if len(fileMatched) == 0:
            raise NotFoundError, 'File could not be found.'
    except NotFoundError, error:
        print error

当我这样调用函数时:

csvPath = findFirstMatch('bounding_box_limits.csv')

在 Python 控制台中运行时收到此错误消息:

Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "MassSpringDamperCAD.py", line 121, in <module>
    main()
  File "MassSpringDamperCAD.py", line 90, in main
    with open(csvPath, 'r') as csvFile:
IOError: [Errno 2] No such file or directory: "['.\\\\common\\\\bounding_box_limits.csv']"

它找到了文件,但是所有这些额外的反斜杠是如何在文件路径中结束的呢?

注意:我使用的是 Windows 7 和 Python 2.7.3。

4

1 回答 1

1

这些反斜杠是它们是反斜杠这一事实的副作用。咕咕咕:-)

在字符串中,表示反斜杠的反斜杠通常在 CLI 中以反斜杠开头,否则 in 在特殊字符同义词之前,例如\n换行符、\t制表符。根据我的经验,这些反斜杠的数量不会导致问题。您始终可以尝试将字符串中的路径标准化os.path.normpath()

这个问题肯定是特定于Windows的。

于 2013-06-11T16:13:59.883 回答