类型错误:强制使用Unicode:需要字符串或缓冲区,找到文件(open()函数)

2024-05-15 02:01:38 发布

您现在位置:Python中文网/ 问答频道 /正文

我是编程新手,尤其是Python。我想和 this tutorial 一起学。 我现在在练习19,其中一个学习练习是创建自己设计的功能,并运行十次。我想到目前为止我做得很好,直到第10轮。这是我第一次尝试创建并写入一个文件,然后再次打开它,取出数字并将其放入bread_and_butter变量中。

错误如下:

Traceback (most recent call last):
  File "ex19b.py", line 95, in <module>
    j2 = open(j1)
TypeError: coercing to Unicode: need string or buffer, file found

from sys import argv

def bread_and_butter(bread, butter):
    print "I have %d bread(s) and %d grams butter\n" % (bread, butter)


print "1. I can give it the numbers directly:"
bread_and_butter(10, 15)

print "2. Or I could use variables from my script:"
amount_of_bread = 10
amount_of_butter = 15

bread_and_butter(amount_of_bread, amount_of_butter)

print "3. We can even do math inside it:"
bread_and_butter(10 + 5, 7 + 9)

print "4. And we can combine both, math and variables:"
bread_and_butter(amount_of_bread + 7, amount_of_butter + 9)

print "5. We can let the user decide how much we have:"
x = raw_input("How much bread do we have?")
i = raw_input("And how much butter do we have?")

y = int(x)
z = int(i)

bread_and_butter(y, z)

print "6. Also we can take arguments for that:"

script, how_much_bread, how_much_butter = argv

q = int(how_much_bread)
w = int(how_much_butter)

bread_and_butter(q, w)

print "7. Another mathematic way:\n"
x1 = raw_input("How much breads do we have left?")
x2 = raw_input("How much breads do we need?")
y1 = raw_input("How much grams butter was left again?")
y2 = raw_input("How much grams butter do we still need?")

a1 = int(x1)
a2 = int(x2)
b1 = int(y1)
b2 = int(y2)

c, d = a2 - a1, b2 - b1

print "We still need %d bread(s) and %d gram butter but\n" % (c, d)

bread_and_butter(a1, b1)

print "8. Another way:\n"
bread = 10
butter = 300

y = bread - 8
z = butter - 1000

bread_and_butter(y, z)

print "9. Second last way:\n"

script, bread, butters = argv

f = int(bread)
g = int(butters)

l = f - 30
k = g - 500

bread_and_butter(l, k)

print "10. The last way:\n"

j = raw_input("I'll create a file with numbers in it, what's it's name?")

j1 = open(j, 'w')

number1 = raw_input("How many breads do we have?")
number2 = raw_input("And how much butter do we have?")

print "I'm going to write these to the file..."

j1.write("%s\n%s\n" % (number1, number2))

j1.close()

print "The filename is: %s." % j1.name

j2 = open(j1)
j3 = open(j1)

j4 = j2.read()
j5 = j3.read()

j6 = int(j4)
j7 = int(j5)

bread_and_butter(j6, j7)

如果有人能帮我出去,我会很高兴的。我想这并不是我最不理解的事情,但现在这让我感到困惑。我相信你“专业人士”只要看一眼就会发现问题所在。

无论如何,提前谢谢你

温普尔


Tags: andofinputrawhaveamountdohow
1条回答
网友
1楼 · 发布于 2024-05-15 02:01:38

您得到这个错误是因为open正在寻找一个文件名称,并且您正在将文件对象本身j1传递给它。例如,如果您打开j,您将不再有错误。

编辑: 如果要打开文件并读取特定行,我将使用以下内容:

j1 = open(j, 'w')
for i, line in enumerate(j1):
    if i == 12:
        # this is the 13th line
    elif i == 312:
        # this is the 313th line
    elif i > 1000:
        break
j1.close()

相关问题 更多 >

    热门问题