0

プログラムに必要な多数の変数を保存するために csv ファイルを使用しています。os.path を使用して 2 つのファイルへの相対パスを定義し、それらのパスを get_csv_args という関数に送信して csv を開いて情報を解析します。最初のパスは正常に開きますが、2 番目のパスではバックスラッシュがすべてパスで二重になっているため、エラーが発生します。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

[「サーバー」、「サーバー名」、「UID」、「ユーザー」、「PWD」、「パスワード」]

トレースバック (最新の呼び出しが最後):

何とか何とか何とか

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 に答える