0

我正在使用 csv 文件来存储我的程序所需的大量变量。我使用 os.path 来定义两个文件的相对路径,并将这些路径发送到一个名为 get_csv_args 的函数,该函数打开 csv 并解析信息。第一个路径可以正常打开,但第二个路径会导致错误,因为路径中的反斜杠都被加倍了。我尝试使用 os.path.normpath 但没有帮助。

主功能

import os
from misc.get_csv_args import get_csv_args
def main():
    server=os.path.abspath('..\..\server_info.csv')
    archive=os.path.abspath('.\CreateDelete_archive_info.csv')
    print server
    print archive
    print str(get_csv_args(server))
    print str(get_csv_args(os.path.normpath(archive)))
    
if __name__ == '__main__':
    main()

get_csv_args

import csv, os.path
def get_csv_args(filename):
    read_args = csv.reader(open(os.path.normpath(filename), 'rb'))
    args = []
    for row in read_args:
        args = args + row[:2] #Add the first two items in each row to the args list
    args = filter(lambda name: name.strip(), args) #Remove whitespace entries from the list
    return args

主输出

C:\Users\blahblahblah\src\server_info.csv

C:\Users\blahblahblah\src\test_cases\archive\CreateDelete_archive_info.csv

['server', 'server_name', 'UID', 'user', 'PWD', 'password']

回溯(最近一次通话最后):

等等等等等等

IOError:[Errno 2] 没有这样的文件或目录:'C:\\Users\\blahblahblah\\src\\test_cases\\archive\\CreateDelete_archive_info.csv'

4

2 回答 2

2

反斜杠被加倍是正常行为,不会导致您的错误 - 它发生是因为反斜杠是转义字符(例如,'\t'是一个制表符,但是'\\t'是一个反斜杠后跟一个“t”)。不过,这可能会给您带来实际的问题(例如,名为 '.\thing' 的文件会导致严重的损坏),因此您应该使用正斜杠或原始字符串作为路径。

最有可能导致您当前的问题是文件 CreateDelete_archive_info.csv 实际上不存在。确保您拥有正确的名称和路径 - 例如,在命令提示符下,执行以下操作:

dir C:\Users\blahblahblah\src\test_cases\archive\CreateDelete_archive_info.csv
于 2012-07-20T13:51:52.030 回答
0

您是否尝试过:

archive=os.path.abspath('CreateDelete_archive_info.csv')

没有.\

于 2012-07-20T13:44:17.240 回答