如何在python中的os.path.join中指定文件名

时间:2015-07-02 18:41:32

标签: python

我有

fruits = [ apple, pineapple, oranges, mango, banana ]
size = [small, medium, large] 

我正在尝试为所有水果组合创建路径,其大小如下:

for fruit, size in itertools.product(fruits, sizes):
    main-directory = sys.argv[1]
    sizefilepath = os.path.join(maindirectory, fruit, "business", fruit_size.dot)

    try:
       sizefile = open(sizefilepath, "r")
    except:
       print("could not open" +sizefilepath)
    sizefile.close()

     estimatefilepath = os.path.join(maindirectory, "get", "estimate", "of", fruit_size.txt)  
     try: 
        estimatefile = open(estimatefilepath)
     except:
        print("could not open"+estimatefilepath)
     estimatefilepath.close() 

当我执行代码时,它会给出一个错误,即没有定义fruit_size。当我定义

fruit_size = [different comibinations like apple_small etc.]

它给出了一个错误,即没有属性作为字符串的.txt。

如何解决错误? 我剩下的代码也使用了sizefile和estimatefile。我该如何排序执行? 喜欢所有水果,我想逐个执行它。 目前,如果我尝试,我得到值错误:关闭文件上的I / O操作。

1 个答案:

答案 0 :(得分:1)

如果你想要的sizefile文件名是 - <fruit>_<size>.dot,例如 - apple_small.dot,第二个文件名必须是<fruit>_<size>.txt那么你使用的是错误的,python会假设fruit_size是一个.dot作为该对象内部变量的对象,不是这种情况,你想在这里使用字符串连接。

示例 -

for fruit, size in itertools.product(fruits, sizes):
    maindirectory = sys.argv[1]
    sizefilepath = os.path.join(maindirectory, fruit, "business", fruit + "_" + size + ".dot")

    try:
       sizefile = open(sizefilepath, "r")
    except:
       print("could not open" +sizefilepath)
    sizefile.close()

     estimatefilepath = os.path.join(main-directory, "get", "estimate", "of", fruit + "_" + size + ".txt")  
     try: 
        estimatefile = open(estimatefilepath)
     except:
        print("could not open"+estimatefilepath)
     estimatefilepath.close()