在函数python 3中打开一个文件

时间:2014-04-27 02:07:50

标签: python-3.x errno

我是一个初学者,试图打开一个文件作为函数的一部分,其中文件名/路径是函数中的变量。我已经写了一个但是在类似的功能上出错了。这是功能代码:

def read_board(board_file):
    """ (file path) -> list of str

    Return a board read from open file board_file. 

    >>>read_board('C:\Python33\Doc\theboard1.txt') 
    """

    bo_file = open(board_file, 'r')
    lines = bo_file.readlines()

    return lines

我收到此错误

  

OSError:[Errno 22]参数无效:' C:\ Python33 \ Doc \ theboard1.txt'

路径正确(三重检查),我使用该示例测试文件读取。

3 个答案:

答案 0 :(得分:2)

你需要使用双反斜杠来逃避反斜杠,以下内容将起作用:

read_board('C:\\Python33\\Doc\\theboard1.txt')

这样,python会将第二个\视为文字,并且不会将其用作后面的字符的转义字符在你的情况下。

答案 1 :(得分:2)

我通常建议使用os.path.join,但由于Windows路径无论如何都会受到大脑损坏,这对你的帮助不大.¹

正确使用的一种方法是使用不解释反斜杠的原始Python字符串:

open(r'c:\stupid\junk.txt')

或者只是假装DOS是一个糟糕的梦想并使用像上帝那样的正斜杠:

open('c:/stupid/junk.txt')

¹为读者行动:os.path.join('c:', 'junk.dat')返回什么?它的行为是否不同于`os.path.join('stupid','junk.txt')?这是confusion for a while吗?

答案 2 :(得分:0)

你可以使用::

  

os.sep

文件之间

  

(" C:&#34 + + os.sep"用户&#34)

导入os模块后