我尝试在我的 Anaconda Jupyter Notebook 中运行这段 Python 3 代码(同一单元格,没有其他内容):
train = pd.read_csv('tutorial\labeledTrainData.tsv', header=0, delimiter="\t", quoting=3) #OK!
test = pd.read_csv('tutorial\testData.tsv', header=0, delimiter="\t", quoting=3) #FileNotFoundError!
第一行运行得很好,但第二行出现错误:
FileNotFoundError: [Errno 2] File b'tutorial\testData.tsv' does not exist: b'tutorial\testData.tsv'
相应 tutorial 文件夹中的 dir 命令给出:
06.12.2019 15:38 <DIR> .
06.12.2019 15:38 <DIR> ..
05.05.2018 20:07 33 556 378 labeledTrainData.tsv
05.05.2018 20:07 282 796 sampleSubmission.csv
05.05.2018 20:07 32 724 746 testData.tsv
05.05.2018 20:07 67 281 491 unlabeledTrainData.tsv
即“问题”文件 testData.tsv 就在那里,在“好”文件 labeledTrainData.tsv 旁边。
如果我更改第二行的斜线方向并像这样运行它:
train = pd.read_csv('tutorial\labeledTrainData.tsv', header=0, delimiter="\t", quoting=3) #OK!
test = pd.read_csv('tutorial/testData.tsv', header=0, delimiter="\t", quoting=3) #OK!
然后两条线都运行得很好。同样,如果我将 r 放在问题文件名之前,它们就可以正常运行:
test = pd.read_csv(r'tutorial\testData.tsv', header=0, delimiter="\t", quoting=3) #OK!
我检查了两个文件的属性 - 没有一个是隐藏的,也不是只读的,权限是相等的,等等。
更改单元格中的行顺序不会更改错误 - 同一文件有问题...
我想知道pandas(或python?)在第二行代码中看到了什么问题,而我没有看到?
Python 将
\t
解释为字符串 'tutorial\testData.tsv'
中的制表符。
正如您所发现的,您可以通过使用
r"..."
将其指示为 raw-string 来更改此设置,这意味着 python 会忽略反斜杠。
试试这个方法。
test = pd.read_csv('tutorial\testData.tsv', header=0, delimiter=r'\t',quoting=3)
尝试使用完整路径(从“C:”开始)