2015-06-21 69 views
2

我试图用Python读取模式打开文件。我收到的错误提示我正在使用won文件名或读取模式。当我将文件路径输入到我的电脑中时,它可以正常工作。我试图将输入文件名分配给一个变量,然后以读模式打开变量。我也尝试输入完整路径并在读取模式下打开路径。这两个游戏我是一个错误。使用Python在读取模式下打开文件

代码:

workingDirec = raw_input("What is the working directory?") 
original_file = raw_input("The input filename is?") 

def calculateZscore(): 
    "Z score calc" 
full_original = os.path.join(workingDirec,original_file) 
print full_original 

f = open ('C:\Users\tpmorris\ProgramingAndScripting\Trial 2 Data\Trial 2 Data\NCSIDS_ObsExp.txt','r') 
print f 

我的结果:

使用完整路径输出:

什么是工作目录C:\用户\ tpmorris \ ProgramingAndScripting \试验2 Data \ Trial 2 Data

输入文件名是?NCSIDS_ObsExp。 TXT

C:\用户\ tpmorris \ ProgramingAndScripting \试验2数据\试验2数据\ NCSIDS_ObsExp.txt

IO错误:[错误22]无效的模式( 'R')或文件名:“C:\用户\ tpmorris \ ProgramingAndScripting \试验2数据\试验2数据\ NCSIDS_ObsExp.txt”

使用可变输出:

IO错误:[错误2]没有这样的文件或目录: 'full_original'

+1

我*想*你需要逃避你的斜杠。 –

+0

'open()'函数将默认为读取模式,因此您不需要明确地说明它。 – uname01

回答

1

首先,在Windows上,必须转义反斜杠(双反斜线)如果您打算使用Windows路径语法,由@James Mills指出的原因回答。

另一种选择是使用正斜杠; Python将在os.path中正确解释这些。

你可以为你的命令行路径输入使用:

C:/Users/tpmorris/ProgramingAndScripting/Trial 2 Data/Trial 2 Data

或者添加

/NCSIDS_ObsExp.txt

上面,如果你要使用硬编码路径。

首先,你的文件打开,应使用语句来完成:

此外,如果你要打印你的文本文件的内容,你应该做一些小的改动你的代码。这将确保文件对象内建于__enter____exit__方法被调用,特别是,如果您在打开文件后忘记关闭文件。

请参阅Understanding Python's with statement了解更多信息。

其次,如果要打印文本文件中的每一行,请不要尝试打印文件对象。而是循环播放并打印出来。

所以你接受命令行输入应该是代码:

import os 

    workingDirec = raw_input("What is the working directory?") 
    original_file = raw_input("The input filename is?") 


    full_original = os.path.join(workingDirec,original_file) 
    print full_original 


    with open(full_original,'r') as f: 
     for line in f: 
      print line 
    f.close() 

我删除功能的高清做别的事情在你的文件之中读取代码。该def应该去其他地方。

3

在Windows上你的路径必须被转义,因为Windows使用反斜杠\表示路径分隔符。

但是反斜杠通常用作转义序列,在Python中也可以使用反斜杠!所以,你必须 “逃离” 他们是这样的:

f = open ('C:\\Users\\tpmorris\\ProgramingAndScripting\\Trial 2 Data\\Trial 2 Data\\NCSIDS_ObsExp.txt','r') 

参见:

+1

我认为正斜杠同样适用。 – Rishav

相关问题