【发布时间】:2017-04-16 00:08:22
【问题描述】:
所以我想使用 csv 模块来读取一些 csv.files,但给定代码出现以下错误:
########################### IMPORT MODULES ############################
import sys, time, glob, os, csv, student
######################### DEFINE PARAMETERS ###########################
timings_csv_file = './timings.csv'
inputs_csv_file = './inputs.csv'
testing_pair_csv_file = './testing_pair.csv'
############## LOAD TIMINGS INFORMATION AND TEST PAIR #################
csv_reader = csv.reader(open(timings_csv_file, 'rb'), delimiter=',')
timings = [int(element) for element in csv_reader.next()]
csv_reader = csv.reader(open(testing_pair_csv_file, 'rb'), delimiter=',')
testing_pair = [long(element) for element in csv_reader.next()]
csv_reader = csv.reader(open(inputs_csv_file, 'rb'), delimiter=',')
inputs = [long(element) for element in csv_reader.next()]
##################### PERFORM TIMING ATTACK ###########################
key = student.perform_timing_attack(inputs, timings, testing_pair)
######################## OUTPUT RESULTS ###############################
keyhex = ",".join(["%02X" % (key >> 64-(8*(i+1)) & 0x00000000000000FF ) for i in range(64/8) ])
print keyhex
################### WRITE RESULTS TO A FILE ###########################
keyF = open( "./key.txt", "w" )
keyF.write(keyhex)
keyF.close()
我收到即将出现的错误消息:
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "/Users/Amine/anaconda/lib/python2.7/site-packages/spyder/utils/site/sitecustomize.py", line 866, in runfile
execfile(filename, namespace)
File "/Users/Amine/anaconda/lib/python2.7/site-packages/spyder/utils/site/sitecustomize.py", line 94, in execfile
builtins.execfile(filename, *where)
File "/Users/Amine/Downloads/SIKA_Aufgabe_2/ga24feb_timings/framework/main.py", line 13, in <module>
csv_reader = csv.reader(open(timings_csv_file, 'rb'), delimiter=',')
IOError: [Errno 2] No such file or directory: './timings.csv'
我认为 Python 无法在当前目录中找到它实际查找或运行的文件,因为我说过:“./file.csv”。据我所知,它正在查看其当前目录。我知道,如果我输入 csv 文件的整个路径,它会起作用,但我想让它独立于文件路径,因此代码必须能够始终使用自己路径中的数据.
那么我必须如何更改 Python 的路径才能将 csv 文件留在原处并且仍然能够使用“./file.csv”。例如。当我通过使用“sys.path[0]”检查 Python 实际在寻找什么路径时,我得到了输出“''”,我并不真正理解,因为路径的 '' 到底是什么?此外,我尝试设置我的 PYTHONPATH,但我认为 PYTHONPATH 只涉及模块的数据导入(对吗?)。
那么我应该怎么做才能设置 Python 正在寻找的路径,以使“./file.csv”对我有用。
谢谢!
【问题讨论】:
-
您是否尝试从脚本运行的位置升级一个目录?在这种情况下,您可以
import os,然后是directory = os.path.dirname(__file__),然后是file_to_read = os.path.join(directory, '../timings.csv')。我不确定与脚本位置无关的更通用的解决方案。 -
它正在
/Users/Amine/anaconda/lib/python2.7/site-packages/spyder/utils/site/中搜索,这就是您收到该错误的原因。 -
是的,你怎么知道的。我使用以下“ os.chdir('/Users/Amine/Downloads/SIKA_Aufgabe_2/ga24feb_timings')”更改了当前的python工作目录,从而可以升级一个目录。但我仍然收到错误消息。
-
@Prajwal:那么我怎样才能将其更改为搜索 /Users/Amine/Downloads/SIKA_Aufgabe_2/ga24feb_timings?
-
当有相对路径时,python从当前执行脚本的位置开始。我在这里找到了一个非常有用的帖子。看一下这个。 stackoverflow.com/questions/1270951/…
标签: python python-2.7 file csv reader