Python 错误 TypeError:函数需要 1 个参数(给出 5 个)

声明:本页面是StackOverFlow热门问题的中英对照翻译,遵循CC BY-SA 4.0协议,如果您需要使用它,必须同样遵循CC BY-SA许可,注明原文地址和作者信息,同时你必须将它归于原作者(不是我):StackOverFlow 原文地址: http://stackoverflow.com/questions/23766383/
Warning: these are provided under cc-by-sa 4.0 license. You are free to use/share it, But you must attribute it to the original authors (not me): StackOverFlow

提示:将鼠标放在中文语句上可以显示对应的英文。显示中英文
时间:2020-08-19 03:26:01  来源:igfitidea点击:

Python error TypeError: function takes exactly 1 argument (5 given)

pythonpython-2.7file-io

提问by user3657637

Traceback (most recent call last):
  File "wdd.py", line 164, in <module>
    file.write("temperature is ", temperature, "wet is ", humidity, "%\n")
TypeError: function takes exactly 1 argument (5 given)

Python:

Python:

 # -*- coding: utf-8 -*-
"""
Created on Sun Jan 26 14:24:43 2014

@author: pi
"""
import smtplib
import RPi.GPIO as gpio
import time
gpio.setwarnings(False)
gpio.setmode(gpio.BOARD)
time.sleep(1)
data=[]
def delay(i): #20*i usdelay
    a=0
    for j in range(i):
        a+1
j=0
#start work
gpio.setup(7,gpio.OUT)
#gpio.output(12,gpio.HIGH)
#delay(10)
gpio.output(7,gpio.LOW)
time.sleep(0.02)
gpio.output(7,gpio.HIGH)
i=1
i=1

#wait to response
gpio.setup(7,gpio.IN)
gpio.setup(15,gpio.OUT)
gpio.setup(16,gpio.OUT)


while gpio.input(7)==1:
    continue


while gpio.input(7)==0:
    continue

while gpio.input(7)==1:
        continue
#get data

while j<40:
    k=0
    while gpio.input(7)==0:
        continue

    while gpio.input(7)==1:
        k+=1
        if k>100:break
    if k<3:
        data.append(0)
    else:
        data.append(1)
    j+=1

print "Sensor is working"
#get temperature
humidity_bit=data[0:8]
humidity_point_bit=data[8:16]
temperature_bit=data[16:24]
temperature_point_bit=data[24:32]
check_bit=data[32:40]

humidity=0
humidity_point=0
temperature=0
temperature_point=0
check=0



for i in range(8):
    humidity+=humidity_bit[i]*2**(7-i)
    humidity_point+=humidity_point_bit[i]*2**(7-i)
    temperature+=temperature_bit[i]*2**(7-i)
    temperature_point+=temperature_point_bit[i]*2**(7-i)
    check+=check_bit[i]*2**(7-i)

tmp=humidity+humidity_point+temperature+temperature_point
print "temperature is " , temperature,"*C"
print     "wet is ",humidity, "%"
import smtplib
import RPi.GPIO as GPIO
import time
if check == tmp:
    print "temperature is ", temperature,"wet is ",humidity,"%"
#file = open("wdd.txt","w")
#file.write ("temperature is ", temperature, "wet is ", humidity, "%\n")
#file.close()
    #print "temperature is ", temperature,"wet is ",humidity,"%"
    while True:

      #check.close()
      if temperature>28:

   #while temperature>29:
#   continue
       GPIO.output(15,True) 
       file = open("wdd.txt", "w")

       file.write("The fan 1 was turn on\n")
       file.close()
     # print "1"
      break
        #continue 

#      time.sleep(2)

    while True:
    if temperature<24:

#continue
         GPIO.output(15, False)
         file = open("wdd.txt", "w")

         file.write("The fan 1 was turn off\n") 
         file.close()

    #print "2"
    break
        #continue
#   time.sleep(2)
    while True:
    if humidity>89:
         #check.close()
       #continue
         GPIO.output(16,True)
     file = open("wdd.txt", "w")

         file.write("The fan 2 was turn on\n")
         file.close()
#print "3"
    break
        #continue
#          time.sleep(2)

    while True:
    if humidity<80: 
        #check.close()      
#continue
         GPIO.output(16, False)
         file = open("wdd.txt", "w")

         file.write("The fan 1 was turn off\n")
         file.close()

    #print "4"
    break
        #continue
#    k   time.sleep(2)
   # print "a"  
else:
    print "something is worong"



if check == tmp:
#    print "temperature is ", temperature,"wet is ",humidity,"%"
 file = open("wdd.txt","w")
 file.write("temperature is ", temperature, "wet is ", humidity, "%\n")
 file.close()
    #print "temperature is ", temperature,"wet is ",humidity,"%"

回答by Martijn Pieters

file.write()only takes one argument, a string. You've given it five instead:

file.write()只接受一个参数,一个字符串。你给了它五个:

file.write("temperature is ", temperature, " wet is ", humidity, "%\n")

Make that one string:

制作一个字符串

file.write("temperature is " + str(temperature) + " wet is " + str(humidity) + "%\n")

or use string formatting:

或使用字符串格式:

file.write("temperature is {} wet is {}%\n".format(temperature, humidity))

file.write()does notact like a printstatement.

file.write()没有像一个print声明。