Python:文件不存在。确保正确的文件名

时间:2016-04-08 14:04:59

标签: python arguments

我正在使用一个人的代码

import sys
try:
    filename = sys.argv[1];
    represent_points = int(sys.argv[2]);
    delimeter = sys.argv[3];
    if (delimeter=="space"):
        delimeter = " ";
    if (delimeter=="tab"):
        delimeter = "\t";
    f = open(filename+".txt","r");
except:
    sys.exit("File not exists. Make sure of the right filename");
from string import *
import degree_sampling
degree_sampling.degree_sampling(filename,represent_points,delimeter);

但是

milenko@milenko-HP-Compaq-6830s:~/KSCnet_Linux/Python_Code$ python trialrun.py datan 21
File not exists. Make sure of the right filename

那不是真的

milenko@milenko-HP-Compaq-6830s:~/KSCnet_Linux/Python_Code$ stat datan.txt
  File: ‘datan.txt’
  Size: 65          Blocks: 8          IO Block: 4096   regular file
Device: 801h/2049d  Inode: 3670784     Links: 1
Access: (0664/-rw-rw-r--)  Uid: ( 1000/ milenko)   Gid: ( 1000/ milenko)
Access: 2016-04-08 10:54:23.695416155 -0300
Modify: 2016-04-08 10:54:23.695416155 -0300
Change: 2016-04-08 10:54:23.695416155 -0300
 Birth: -

我该怎么办?

2 个答案:

答案 0 :(得分:2)

python trailrun.py datan 21只有2个参数,但脚本有:

delimeter = sys.argv[3]

如果您检查错误,我相信您会看到IndexError,因为您正在尝试访问sys.argv中不存在的索引。您应该提供正确数量的参数,或者在未向脚本提供第三个参数时尝试处理这些情况。

另外,请查看ArgParse。它是Python提供的用于在脚本中创建命令行参数的API。

答案 1 :(得分:1)

正如一位评论者所指出的那样,问题就在于,你错过了最后一个参数,即分隔符。尝试:

def to_indexed_json  
  only: {
    :title          => title,
    :description    => description,
    :categories     => categories.map { |c| { :name => c.name}},
    :subcategories  => subcategories.map { |s| { :name => s.name}},
    :entry_type     => entry_type_name
  },
  methods: [:attachment]
end
另外,正如另一位评论者所指出的那样,为了不被混淆,你应该只抓住预期的错误。替换这个:

style="overflow:scroll;"

有了这个:

python trialrun.py datan 21 space