首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在函数python 3中打开文件

在函数python 3中打开文件
EN

Stack Overflow用户
提问于 2014-04-27 02:07:50
回答 3查看 125关注 0票数 2

我是一个初学者,尝试打开一个文件作为函数的一部分,其中文件名/路径是函数中的变量。我写了一个,但是在类似的函数上出现了一个错误。下面是函数代码:

代码语言:javascript
复制
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 33\Doc\theboard1.txt’

路径是正确的(三次检查),我正在使用这个例子来测试文件读取。

EN

回答 3

Stack Overflow用户

发布于 2014-04-27 02:10:56

您需要使用双反斜杠--转义反斜杠--如下所示将有效:

代码语言:javascript
复制
read_board('C:\\Python33\\Doc\\theboard1.txt')

这样,python就可以将第二个\作为一个文字来处理,而不是像在您的情况下那样,将其用作后面字符的转义字符。

票数 2
EN

Stack Overflow用户

发布于 2014-04-28 04:18:31

我通常建议使用os.path.join,但由于Windows路径无论如何都受到了很大的损害,这不会有太大帮助。

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

代码语言:javascript
复制
open(r'c:\stupid\junk.txt')

或者假装DOS是个恶梦,像上帝想要的那样使用正斜杠:

代码语言:javascript
复制
open('c:/stupid/junk.txt')

给读者的练习:os.path.join('c:', 'junk.dat')返回什么?它和`os.path.join(“愚蠢”,“junk.txt”)不同吗?这是confusion for a while吗?

票数 2
EN

Stack Overflow用户

发布于 2014-04-27 03:34:31

你可以使用:

os.sep

在类似的文件之间

(“C:”+os.sep+“用户”)

导入os模块后

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/23318589

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档