簡體   English   中英

Python:從子和打印返回值返回'None'

[英]Python: returning 'None' from a sub and printing return value

我在下面的python腳本返回一個變量,該變量可以是None或從文件讀取的blob數據。 我認為這將是一種確定三種狀態之一的簡單方法:

  • 任何錯誤都返回None
  • 空數據返回一個空變量
  • 成功讀取返回變量中的數據

這(也在下面)是我得到的錯誤。 我可以只為data而不是None分配""並測試一個空變量,但這看起來有點俗氣。 打印包含在str()的變量可能會起作用,但每次我想打印變量時,這似乎都需要額外的輸入(或打印變量的特殊功能)。 我必須在這里離開基地。

$ ./foo.py 
Traceback (most recent call last):
  File "./foo.py", line 20, in <module>
    print " data read was " + line_read
TypeError: cannot concatenate 'str' and 'builtin_function_or_method' objects

碼:

#!/usr/bin/python
import sys, os

def get_data (src):
   data = None

   if os.path.isfile (src):
      with open(src, 'rt') as f:
         data = f.read

   return data


line_read  = get_data('foo.txt')

if line_read is None:
   print "no data in file"
   sys.exit(1)

print " data read was " + line_read

看來問題是你正在使用f.read Python支持高階編程,實質上允許您將函數/方法分配給變量。 那么,你是從返回get_data基本上是不能用一個字符串,它是你所得到的錯誤串接功能,所以要解決這個問題調用方法read如下:

#!/usr/bin/python
import sys, os

def get_data (src):
   data = None

   if os.path.isfile (src):
      with open(src, 'rt') as f:
         data = f.read() # this will solve your problem

   return data


line_read  = get_data('foo.txt')

if line_read is None:
   print "no data in file"
   sys.exit(1)

print " data read was " + line_read

您剛剛將變量data分配給具有該data = f.read調用的方法,您應該實際調用該方法:

data = f.read()

您應該從調用函數的任何位置添加括號。 在您的程序中, f.read()是一個函數,但您將其鍵入為f.read會導致錯誤。 解決方案是用f.read() 替換 f.read

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM