两个文件放在同一个文件夹里,为什么使用open(文件名)打不开,而用open(路径)可以?

sayyesnono 2017-10-13 07:36:49
代码:
with open("piDigits.txt",'r') as file_object:
lines = file_object.readlines()

for line in lines:
print line.rstrip()

其中,piDigits和该代码文件在同一文件夹内

执行后报错:
IOError: [Errno 2] No such file or directory: 'piDigits.txt'
...全文
458 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
混沌鳄鱼 2017-10-18
  • 打赏
  • 举报
回复

>>> import os
>>> help(os.getcwd)
Help on built-in function getcwd in module nt:

getcwd()
    Return a unicode string representing the current working directory.

>>> help(os.path.realpath)
Help on function abspath in module ntpath:

abspath(path)
    Return the absolute version of a path.

>>> help(os.path.dirname)
Help on function dirname in module ntpath:

dirname(p)
    Returns the directory component of a pathname

混沌鳄鱼 2017-10-18
  • 打赏
  • 举报
回复
[root@CentOS6 ~]# pwd /root [root@CentOS6 ~]# vim show_path.py [root@CentOS6 ~]# cat show_path.py #!/usr/bin/env python # -*- coding: utf-8 -*- import os print 'current working directory:', os.getcwd() print 'script file directory:', os.path.dirname(os.path.realpath(__file__)) [root@CentOS6 ~]# cd /tmp [root@CentOS6 tmp]# pwd /tmp [root@CentOS6 tmp]# python /root/show_path.py current working directory: /tmp script file directory: /root [root@CentOS6 tmp]#
sayyesnono 2017-10-18
  • 打赏
  • 举报
回复
引用 4 楼 混沌鳄鱼的回复:
比较标准的做法是下面这样写。 只要把txt文件放在脚本文件相同目录,无论从什么路径调用都可以正确打开文件。

import os.path

base_path = os.path.dirname(os.path.realpath(__file__))  # 获取当前路径
file_path = os.path.join(base_path, "piDigits.txt")

with open(file_path,'r') as file_object:
    lines = file_object.readlines()
    
for line in lines:
    print line.rstrip()

您好!请问第4行和os.getcwd有什么区别?os.cwd会不会更简便?
混沌鳄鱼 2017-10-17
  • 打赏
  • 举报
回复
比较标准的做法是下面这样写。 只要把txt文件放在脚本文件相同目录,无论从什么路径调用都可以正确打开文件。

import os.path

base_path = os.path.dirname(os.path.realpath(__file__))  # 获取当前路径
file_path = os.path.join(base_path, "piDigits.txt")

with open(file_path,'r') as file_object:
    lines = file_object.readlines()
    
for line in lines:
    print line.rstrip()

sayyesnono 2017-10-17
  • 打赏
  • 举报
回复
引用 1 楼 oyljerry的回复:
py执行的路径可能不是当前目录。最好是拼接完整路径
对对就是这样一开始没发现还要设置路径
ckc 2017-10-15
  • 打赏
  • 举报
回复
你可以在with之前使用 print(os.getcwd()) 打印输出一下当前路径,看看是不是这个文件所在的路径
oyljerry 2017-10-14
  • 打赏
  • 举报
回复
py执行的路径可能不是当前目录。最好是拼接完整路径

37,721

社区成员

发帖
与我相关
我的任务
社区描述
JavaScript,VBScript,AngleScript,ActionScript,Shell,Perl,Ruby,Lua,Tcl,Scala,MaxScript 等脚本语言交流。
社区管理员
  • 脚本语言(Perl/Python)社区
  • IT.BOB
加入社区
  • 近7日
  • 近30日
  • 至今

试试用AI创作助手写篇文章吧