1

関数の1つの戻り値を出力するのに問題があります

def readfile(filename):
    '''
    Reads the entire contents of a file into a single string using
    the read() method.

    Parameter: the name of the file to read (as a string)
    Returns: the text in the file as a large, possibly multi-line, string
    '''
    try:
        infile = open(filename, "r") # open file for reading

        # Use Python's file read function to read the file contents
        filetext = infile.read()

        infile.close() # close the file

        return filetext # the text of the file, as a single string
    except IOError:
        ()


def main():
    ''' Read and print a file's contents. '''
    file = input(str('Name of file? '))
    readfile(file)

readfileの値を別の変数に保存してから、readfileの戻り値を保存した変数の値を出力するにはどうすればよいですか?

4

4 に答える 4

2

これは最も簡単な方法です。関数に try ブロックを追加することはお勧めしません。後でとにかく使用するか、空の値を返す必要があるためです。これは悪いことです。

def readFile(FileName):
    return open(FileName).read()

def main():
    try:
        File_String = readFile(raw_input("File name: "))
        print File_String
    except IOError:
        print("File not found.")

if __name__ == "__main__":
    main()
于 2012-10-30T21:25:20.867 に答える
0

関数呼び出しを変数に割り当てるだけです。

ただし、例外が発生した場合は何も返さないため、関数は を返しNoneます。

def main():
    ''' Read and print a file's contents. '''
    file = input('Name of file? ')           #no need of str() here
    foo=readfile(file)
    print foo

ファイルを処理するときにusewithステートメントを使用すると、ファイルを閉じる処理が行われます。

def readfile(filename):
     try:
        with open(filename) as infile :
           filetext = infile.read()
           return filetext    
     except IOError:
        pass 
        #return something here too
于 2012-10-30T20:00:39.230 に答える
0
def main():
    ''' Read and print a file's contents. '''
    file = input(str('Name of file? '))
    text = readfile(file)

    print text
于 2012-10-30T20:00:44.143 に答える
0

やってみました:

def main():
    ''' Read and print a file's contents. '''
    file = input(str('Name of file? '))
    read_contents = readfile(file)
    print read_contents
于 2012-10-30T20:00:24.047 に答える