如何在其他功能可读的函数中创建文件?

时间:2014-09-10 05:34:17

标签: python

我需要某个函数生成的文件的内容能够被其他函数读取。我最接近的是在另一个函数中导​​入一个函数。以下代码是我正在使用的内容。根据教程,我读过python会打开一个文件,如果它存在或者创建一个文件,如果没有。发生的事情是" def space"文件" loader.py"是没有内容的重复。

def load():                                # all this is input with a couple of filters
    first = input("1st lot#: ")            #
    last = input("last lot#: ")            #
    for a in range(first,last+1):          #
        x = raw_input("?:")
        while x==(""):
            print " Error",
            x=raw_input("?")
        while int(x)> 35:
            print"Error",
            x=raw_input("?")

        num= x    #python thinks this is a tuple
        num= str(num)

        f=open("loader.py","a")                 #this is the file I want to share
        f.write(num)      
    f.close()
    f=open("loader.py","r")                     #just shows that the file is being 
    print f.read()                              #appened
f.close()
print "Finished loading"    





def spacer():    
    count=0
    f=open("loader.py","r")                   #this is what I thought would open the 
                                              #file but just opens a new 1 with the
                                              #same name
    length=len(f.read())                      
    print type(f.read(count))
    print f.read(count)
    print f.read(count+1)
    for a in range(1,length+1):
        print f.read(count)
        vector1= int(f.read(count))        
        vector2 = int(f.read(count+1))
        if vector1==vector2:
            space= 0
        if vector1< vector2:    
            space= vector2-vector1
        else:
            space= (35-vector1)+vector2
            count=+1
            b= open ("store_space.py","w")
            b.write(space)           
    b.close()
load()
spacer()

这就是我得到的

1st lot#: 1  
last lot#: 1  
?:2
25342423555619333523452624356232184517181933235991010111348287989469658293435253195472514148238543246547722232633834632  
Finished loading        # This is the end of "def load" it shows the file is being appended
<type 'str'>            # this is from "def spacer" I realized python was creating another 
                        # file named "loader.py with nothing in it. You can see this in the 
                        #error msgs below

Traceback(最近一次呼叫最后一次):

File "C:/Python27/ex1", line 56, in <module>
    spacer()
File "C:/Python27/ex1", line 41, in spacer
vector1= int(f.read(count))
ValueError: invalid literal for int() with base 10: ''tion within another function but this only causes the imported function to run.

1 个答案:

答案 0 :(得分:0)

该文件可能包含内容,但您没有正确阅读。你有:

count=0
#...
vector1= int(f.read(count))

你告诉Python读取0个字节,所以它返回一个空字符串。然后它尝试将空字符串转换为int,这会因为错误的说明而失败,因为空字符串不是整数值的有效表示。