Python 我不知道为什么我能';不要打开文件

Python 我不知道为什么我能';不要打开文件,python,tkinter,Python,Tkinter,我知道用Python打开文件很简单。然而,这里肯定发生了一些事情: File "exercise.py", line 16, in getinput f = open('w', fileName) TypeError: an integer is required (got type str) 完整代码,如果可能有问题: from tkinter import * from os import * ide = Tk();ide.title("Pyth

我知道用Python打开文件很简单。然而,这里肯定发生了一些事情:

  File "exercise.py", line 16, in getinput
    f = open('w', fileName)
TypeError: an integer is required (got type str)
完整代码,如果可能有问题:

from tkinter import *
from os import *

ide = Tk();ide.title("Python 3 IDE")
controls = Tk();controls.title("Controls")

# Variables
tab = False
fileName = 'test.py'

# Get input
textInput = Text(ide)
textInput.pack()

def getinput():
    f = open('w', fileName)
    f.write(textInput.get("1.0", END))
save = Button(controls, text="Save", width=10, height=1, command=getinput).grid(column=0, row=0)
def run():
    system('python3 ' + fileName)
run = Button(controls, text="Run", width=10, height=1, command=run).grid(column=1, row=0)

def tab(arg):
    textInput.insert(INSERT, " " * 4)
    return 'break'
textInput.bind("<Tab>", tab)

# Mainloop
ide.mainloop()
controls.mainloop()
从tkinter导入*
从操作系统导入*
ide=Tk();ide.title(“Python3IDE”)
控件=Tk();控制。标题(“控制”)
#变数
tab=False
fileName='test.py'
#获取输入
Text输入=文本(ide)
textInput.pack()
def getinput():
f=打开('w',文件名)
f、 写入(textInput.get(“1.0”,结束))
保存=按钮(控件,text=“save”,宽度=10,高度=1,命令=getinput)。网格(列=0,行=0)
def run():
系统('python3'+文件名)
运行=按钮(控件,text=“run”,宽度=10,高度=1,命令=run)。网格(列=1,行=0)
def选项卡(参数):
textInput.insert(插入“”*4)
返回“中断”
textInput.bind(“,选项卡)
#主回路
ide.mainloop()
controls.mainloop()

PS:我颠倒了参数。只是一个错误。

你是对的,有些事情正在发生,但并非如你所愿。颠倒输入顺序

f=open(文件名为'w')#执行此操作,或
f=打开(文件名,模式为'w')
尽管我建议您尝试使用python习语

打开(文件名,mode='w')作为f的
:
...

因为这将不可避免地让你在未来不再头疼。

你是对的,有些事情正在发生,但并不是你想要的。颠倒输入顺序

f=open(文件名为'w')#执行此操作,或
f=打开(文件名,模式为'w')
尽管我建议您尝试使用python习语

打开(文件名,mode='w')作为f的
:
...

因为这将不可避免地避免您将来的头痛。

在open方法上反转参数:

f = open(FILENAME , "w" ) 

应修复它

在打开方法上反转参数:

f = open(FILENAME , "w" ) 

应该修复它

问题在于你的import语句,它说的是来自os import*的
,这意味着你正在从os
导入所有东西,不需要用
os
作为后缀,现在它取代了python内置的
open()
函数。因此,
os.open()
取代了
open()
。将导入语句更改为:

import os
然后

os.system('python3 ' + fileName)

这可能是不应该使用
from x import*

的一个很好的原因。问题是您的import语句说
from os import*
,这意味着您正在从
os
导入所有内容,不需要使用
os
作为后缀,现在它取代了内置的
open()
python的函数。因此,
os.open()
取代了
open()
。将导入语句更改为:

import os
然后

os.system('python3 ' + fileName)

这可能是一个很好的理由,为什么人们不应该使用
fromximport*

文件名模式!等待它仍然不起作用PaxDiableRead关于
open()
的文档,并使用上下文管理器
open
替换为
os。通过导入
os
中的所有内容来打开
。可能不是个好主意。谢谢,deceze很明显得到了它!等待它仍然不起作用PaxDiableRead关于
open()
的文档,并使用上下文管理器
open
替换为
os。通过导入
os
中的所有内容来打开
。可能不是个好主意。谢谢,deceze显然得到了它。我知道这真是太好了,但它说了另一个错误:TypeError:open()缺少必需的参数“flags”(pos 2)
os。open
替换了默认的
open()
,因为OPI的导入风格。我知道这真的是太好了,但它指出了另一个错误:TypeError:open()缺少必需的参数“flags”(位置2)
os。open
替换了默认的
open()
,因为opt的导入样式太晚了。。。我猜是迟来的谢谢。。。我猜