[英]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.