所以我想使用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无法找到当前目录中实际查找或运行的文件,因为我说:&#34; ./ file.csv&#34;。据我所知,它正在查看其当前目录。我知道,如果我输入csv文件的整个路径,它将起作用,但我想让它独立于文件路径,因此代码必须能够始终使用自己路径中的数据
那么我如何更改Python的路径才能将csv文件保留在原来的位置,并且仍然可以使用&#34; ./ file.csv&#34;。例如。当我通过使用&#34; sys.path [0]&#34;检查Python实际寻找的路径时我得到输出&#34; &#39;&#39; &#34;我真的不明白,因为这是什么&#39;&#39;一条路?此外,我试图设置我的PYTHONPATH,但我认为PYTHONPATH只涉及模块的数据导入(这是对的吗?)。
那么我该怎么做才能设置Python正在寻找的路径&#34; ./ file.csv&#34;适合我。
谢谢!
答案 0 :(得分:0)
如果您知道正在处理的文件始终与您的语句所指示的脚本位于同一路径中,那么代码必须能够始终使用自己路径中的数据。&# 34;,您可以使用其名称(不带斜杠)调用该文件:
timings_csv_file = 'timings.csv'
inputs_csv_file = 'inputs.csv'
testing_pair_csv_file = 'testing_pair.csv'
当您的目录如下所示时,这将起作用:
dir/
....script.py
....timings.csv
....inputs.csv
....testing_pair.csv
另一方面,如果你想上升到一个层次结构级别(我不太确定这是不是你想要的那个?)你可以这样做:
timings_csv_file = '../timings.csv'
inputs_csv_file = '../inputs.csv'
testing_pair_csv_file = '../testing_pair.csv'
当文件夹结构如下所示时,这将起作用:
dir/
....timings.csv
....inputs.csv
....testing_pair.csv
....python/
....script.py
答案 1 :(得分:0)
而不是,
timings_csv_file = './timings.csv'
inputs_csv_file = './inputs.csv'
testing_pair_csv_file = './testing_pair.csv'
使用
import os
current_path = os.getcwd()
timings_csv_file = current_path + '\\timings.csv'
inputs_csv_file = current_path + '\\inputs.csv'
testing_pair_csv_file = current_path + '\\testing_pair.csv'
这将获取脚本的当前工作目录,并将完整路径传递给库。