使用Python以读取模式打开文件

时间:2015-06-21 21:51:44

标签: python python-2.7

我正在尝试使用Python以读取模式打开文件。我收到的错误建议我使用won文件名或读取模式。当我在我的计算机中键入文件路径时,它可以工作。我尝试将输入文件名分配给变量,然后在读取模式下打开变量。我也尝试输入完整路径并在读取模式下打开路径。两个人都给我一个错误。

代码:

library("plyr")
result <- laply(1:nrow(array2),
  function(i) laply(1:ncol(array2),
  function(j) which.min(abs(array1[i, j, ] - array2[i, j]))
))

我的结果:

使用完整路径输出:

什么是工作目录?C:\ Users \ tpmorris \ ProgramingAndScripting \ Trial 2 Data \ Trial 2 Data

输入文件名是?NCSIDS_ObsExp.txt

C:\ Users \ tpmorris \ ProgramingAndScripting \ Trial 2 Data \ Trial 2 Data \ NCSIDS_ObsExp.txt

IOError:[Errno 22]无效模式(&#39; r&#39;)或文件名:&#39; C:\ Users \ tpmorris \ ProgramingAndScripting \ Trial 2 Data \ Trial 2 Data \ NCSIDS_ObsExp.txt&#39 ;

使用变量输出:

IOError:[Errno 2]没有这样的文件或目录:&#39; full_original&#39;

2 个答案:

答案 0 :(得分:3)

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

反斜杠通常用作转义序列,并且在Python中也可以使用!所以你必须逃避&#34;他们是这样的:

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

请参阅:

答案 1 :(得分:1)

首先,在Windows上,如果要使用Windows路径语法,必须使用反斜杠(双反斜杠),出于@James Mills回答中指出的原因。

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

您可以使用命令行路径输入:

  

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

或添加

  

/NCSIDS_ObsExp.txt

如果你打算使用硬编码路径,请点击上面的内容。

如果要打印文本文件的内容,还应对代码进行一些小的更改:

首先,您的文件打开应使用 with 语句完成。这将确保调用 __ enter __ __ exit __ 方法中内置的文件对象,尤其是在您完成后忘记关闭文件时#&# 39;我打开了它。

有关详情,请参阅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,以便在文件读取代码中执行其他操作。 def应该去其他地方。