Python 无法读入文件

Python 无法读入文件,python,python-2.7,Python,Python 2.7,我在阅读我的文件时遇到了一个小问题。我的代码: import csv as csv import numpy with open("train_data.csv","rb") as training: csv_file_object = csv.reader(training) header = csv_file_object.next() data = [] for row in csv_file_object: data.append(r

我在阅读我的文件时遇到了一个小问题。我的代码:

import csv as csv
import numpy 

with open("train_data.csv","rb") as training:
    csv_file_object = csv.reader(training)
    header = csv_file_object.next()

    data = []
    for row in csv_file_object:
        data.append(row)
    data = numpy.array(data)

我得到的错误没有这样的文件“train_data.csv”,所以我知道问题在于位置。但是,每当我像这样指定pad:open(“C:\Desktop…等)它也不工作。我做错了什么?

如果您提供完整的文件路径,您的脚本应该可以工作。因为它不是,所以必须是您的路径中有转义字符。若要解决此问题,请使用原始字符串指定文件路径:

# Put an 'r' at the start of the string to make it a raw-string.
with open(r"C:\path\to\file\train_data.csv","rb") as training:
原始字符串不处理转义字符


另外,仅仅是一个技术事实,不提供完整的文件路径会导致Python在启动脚本的目录中查找该文件。如果不提供完整的文件路径,则会抛出一个错误。

如果提供完整的文件路径,则脚本应能正常工作。由于没有提供完整的文件路径,因此路径中必须包含转义字符。若要解决此问题,请使用ra用于指定文件路径的w字符串:

# Put an 'r' at the start of the string to make it a raw-string.
with open(r"C:\path\to\file\train_data.csv","rb") as training:
原始字符串不处理转义字符

另外,仅仅是一个技术事实,不提供完整的文件路径会导致Python在启动脚本的目录中查找该文件。如果该文件不在目录中,则会抛出一个错误。

当您使用
open()
和Windows时,您需要正确处理反斜杠

选项1。)使用,这将是前缀为
r
的字符串

open(r'C:\Users\Me\Desktop\train_data.csv')
选项2.)避开反斜杠

open('C:\\Users\\Me\\Desktop\\train_data.csv')
选项3.)使用前斜杠

open('C:/Users/Me/Desktop/train_data.csv')
至于查找您正在使用的文件,如果您只是执行
open('train_data.csv')
操作,它将在运行python脚本的目录中查找。因此,如果您是从
C:\Users\Me\Desktop\
运行它,那么您的
train_data.csv
也需要在桌面上。

当您使用
open()
和Windows您需要正确处理反斜杠

选项1。)使用,这将是前缀为
r
的字符串

open(r'C:\Users\Me\Desktop\train_data.csv')
选项2.)避开反斜杠

open('C:\\Users\\Me\\Desktop\\train_data.csv')
选项3.)使用前斜杠

open('C:/Users/Me/Desktop/train_data.csv')

至于查找您正在使用的文件,如果您只是执行
open('train\u data.csv')
它正在查找运行python脚本的目录。因此,如果从
C:\Users\Me\Desktop\
运行它,您的
train\u data.csv
也需要在桌面上。

那么,与您的代码相关的文件在哪里,您是如何运行它的?它正在查找
train\u data.csv
python文件所在的目录。@karthikr实际上在他运行命令的目录中-并不总是相同的内容。当您将整个路径放入时,您希望避开反斜杠或执行此操作。
r“C:\Desktop\train\u data.csv“
。那么与代码相关的文件在哪里,您是如何运行它的?它在python文件所在的同一目录中查找
train_data.csv
。@karthikr实际上在他运行命令的目录中-不总是同一件事您希望避开反斜杠,或者在放入整个路径时执行此操作
r“C:\Desktop\train\u data.csv”
@AleksanderLidtke-正确,但风险很大。最好是防范它们。另外,假设将来Python引入了一个新的转义字符。然后,任何包含该字符的文件路径现在都将不起作用。您也可以使用正斜杠“
/
”来避免它(即使在Windows上)。在现代版本的windows上,
C:/path/to/file/train\u data.csv
是一个有效的文件路径。像``这样的东西也应该起作用@iCodez这是真的,但确保旧代码在新Python上工作有点棘手:)@AleksanderLidtke-true,但这是有风险的。最好是防范它们。另外,假设将来Python引入了一个新的转义字符。然后,任何包含该字符的文件路径现在都将不起作用。您也可以使用正斜杠“
/
”来避免它(即使在Windows上)。在现代版本的windows上,
C:/path/to/file/train\u data.csv
是一个有效的文件路径。像``这样的东西也应该起作用@iCodez确实如此,但确保旧代码在新Python上工作有点棘手:)谢谢您的详细解释!谢谢你的详细解释!