- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我遇到了一个非常奇怪的错误。
我的 python 脚本中的许多函数都包含这段代码:
url=['http://API_URL/query/query.aspx?name=', name, '&md=user']
url=''.join(url)
file = open("QueryESO.xml", "w")
filehandle = urllib.urlopen(url)
for lines in filehandle.readlines():
file.write(lines)
file.close()
当我在 IDLE 中运行时,一切正常。
如果我使用 Python(命令行)运行它,则会出现此错误:
[Errno 22] invalid mode('w') or filename: 'QueryESO.xml'
这是开始变得奇怪的地方:奇怪的 #1:我在脚本的不同函数中有完全相同的代码,但错误只发生在其中一个函数中。
奇怪的 #2:如果我将代码更改为这样,它可以正常工作:
url=['http://API_URL/query/query.aspx?name=', name, '&md=user']
print url
url=''.join(url)
file = open("QueryESO.xml", "w")
filehandle = urllib.urlopen(url)
for lines in filehandle.readlines():
file.write(lines)
file.close()
我也试过将打印 url 移到我加入列表后,这没有用,我只是尝试打印“”,这也得到了前面提到的错误。
所以我想我已经找到了解决方案...但是有人可以解释这种行为吗?难道我做错了什么? (您是否需要我发布整个脚本以便您随意乱搞?)
编辑:这是完整的代码:
import urllib
from Tkinter import *
import tkFont
master = Tk()
QUERY_ESO = "QueryESO.xml"
def QueryXML(xml, attribute):
x = ["<", attribute, ">"]
x=''.join(x)
z = xml.split(x, 1)
x = ["</", attribute, ">"]
x=''.join(x)
z=z[1]
z=z.split(x, 1)
return z[0]
def AddFriend():
nfentry = nfe2
name=nfentry.get()
url=['http://agecommunity.com/query/query.aspx?name=', name, '&md=user']
url=''.join(url)
file = open("QueryESO.xml", "w")
filehandle = urllib.urlopen(url)
for lines in filehandle.readlines():
file.write(lines)
file.close()
f = open(QUERY_ESO, "r")
xml = f.readlines()
f.close()
xml=''.join(xml)
f = open("Friends.txt", "r")
filestring = f.read()
f.close()
fs = filestring.split('\n')
if name in fs:
print "Friend Already Added"
elif xml == "<?xml version='1.0' encoding='utf-8'?><error>Failed to find user</error>":
print "User does not exist"
else:
fs.append(name)
fs = '\n'.join(fs)
f = open("Friends.txt", "w")
f.write(fs)
f.close()
nfe2.set("")
nfentry = nfe2
def DeleteFriend():
ofentry = ofe2
name=ofentry.get()
f = open("Friends.txt", "r")
filestring = f.read()
f.close()
fs = filestring.split('\n')
if name in fs:
fs.remove(name)
fs = '\n'.join(fs)
f = open("Friends.txt", "w")
f.write(fs)
ofe2.set("")
ofentry = ofe2
def IsOnline(name):
url=['http://API_URL/query/query.aspx?name=', name, '&md=user']
print url
url=''.join(url)
file = open("QueryESO.xml", "w")
filehandle = urllib.urlopen(url)
for lines in filehandle.readlines():
file.write(lines)
file.close()
f = open(QUERY_ESO, "r")
xml = f.readlines()
f.close()
xml=''.join(xml)
if xml == "<?xml version='1.0' encoding='utf-8'?><error>Failed to find user</error>":
print "User does not exist"
else:
datetime = QueryXML(xml, "LastUpdated")
datetime = datetime.split('T', 1)
time = datetime[1].split('Z', 1)
date = datetime[0]
print "User", name, "is", QueryXML(xml, "presence"), "as of", date, "at", time[0]
return QueryXML(xml, "presence")
def FriendCheck():
f = open("Friends.txt", "r")
filestring = f.read()
f.close()
fs = filestring.split('\n')
Laonline = Label(lowerframe, text="")
Laonline.grid(column=0, row=0)
Laonline.grid_forget()
x=0
while x <= (len(fs)-1):
if IsOnline(fs[x]) == "online":
Laonline = Label(lowerframe, text=fs[x])
Laonline.grid(column=0, row=x)
x=x+1
def RunTwo(Function1, Function2):
Function1()
Function2()
def DeleteAllFriends():
fs = "<?xml version='1.0' encoding='utf-8'?>\n<friends>\n</friends>"
f = open("Friends.txt", "w")
f.write(fs)
f.close()
FriendCheck()
def DAFPop():
DAFpopup = Toplevel()
DAFframe = Frame(DAFpopup)
DAFframe.grid(columnspan=4, column=0, row=0)
F1 = DeleteAllFriends
F2 = DAFpopup.destroy
Q1 = lambda: RunTwo(F1, F2)
DAFL1 = Label(DAFframe, text="This delete all of your friends. Are you sure you wish to continue?")
DAFL1.grid()
DAFOK = Button(DAFpopup, width=10, text="Yes", command=Q1)
DAFOK.grid(column=1, row=1)
DAFNO = Button(DAFpopup, width=10, text="No", command=DAFpopup.destroy)
DAFNO.grid(column=2, row=1)
frame = Frame(master, bd=5)
frame.grid()
friendlist = Frame(frame, bd=5, width=150, height=400)
friendlist.grid(column=0, row=0, rowspan=15)
lon = Frame(friendlist, bd=2, width=150, height=10)
lon.grid()
Lonline = Label(lon, text="Friends Online")
Lonline.grid(column=0, row=1)
underlined = tkFont.Font(Lonline, Lonline.cget("font"))
underlined.configure(underline=True)
Lonline.configure(font=underlined)
lowerframe = Frame(friendlist, bd=2, width=150, height=390)
lowerframe.grid()
lowerframe.grid_propagate(0)
newfriendframe = Frame(frame, bd=2)
newfriendframe.grid(column=1, row=0)
nfe2 = StringVar()
nfentry = Entry(newfriendframe, width=12, textvariable=nfe2)
nfentry.grid()
nfe2.set("")
nfentry = nfe2.get()
newfriend = Button(newfriendframe, text="Add Friend", width=10, command=AddFriend)
newfriend.grid(column=0, row=1)
oldfriendframe = Frame(frame, bd=2)
oldfriendframe.grid(column=1, row=1)
ofe2 = StringVar()
ofentry = Entry(oldfriendframe, width=12,textvariable=ofe2)
ofentry.grid()
ofe2.set("")
ofentry = ofe2.get()
oldfriend = Button(oldfriendframe, text="Delete Friend", width=10, command=DeleteFriend)
oldfriend.grid(column=0, row=1)
rof = Button(frame, text="Reset List", width=10, command=DAFPop)
rof.grid(column=1, row=2)
update = Button(frame, text="Refresh", width=10, command=FriendCheck)
update.grid(column=1, row=3)
close = Button(frame, text="Exit", width=10, command=master.destroy)
close.grid(column=1, row=4)
master.mainloop()
而不起作用的函数是 IsOnline(),尽管我在其中留下了我发布的代码的打印 url,这似乎使它在 90% 的时间里没有错误地运行,而没有它它会得到100% 的错误率。
它还有一个依赖文本文件,Friends.txt:
friend1
friend2
friend3
创建 QueryESO.xml 似乎对我来说很好,即使它不存在(当然,当它没有收到错误时)。如果您不是这种情况,一个名为 QueryESO.xml 的空白文件可以正常工作,因为它从网页获取内容。
“刷新”按钮是其中有错误的按钮。
最佳答案
一些观察:
(1) 如果问题是实际文件名中的无效字符,从错误消息中可以明显看出;见下文:
>>> open('fu\x01bar', 'w')
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
IOError: [Errno 22] invalid mode ('w') or filename: 'fu\x01bar'
(2) 你说你正在使用文件名的全局常量,但是文字文本出现了两次(在函数 AddFriend 和 IsOnline 中)——如果你确保你发布的代码是有帮助的实际上是你一直在运行的。
(3) 这种“90% 的时间工作”行为的一个原因是扩展(例如 tkinter)没有处理异常,然后当其他东西确实检查错误时弹出。请注意,对于 errorno 22,Windows 只是报告“发生了不好的事情”,而 Python 必须发出“哦,在那种情况下模式一定是错误的,或者文件路径一定是错误的”错误消息。
(4) 我不是一个会逃避谜题的人,但是:在两个地方你可以从网络上得到结果,将它们写入这个文件,然后读回它们——为什么??为什么不直接使用内存中的网络结果?
关于Python - 无效模式 ('w' ) 或文件名,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5110807/
对此感到疯狂,真的缺少一些东西。 我有webpack 4.6.0,webpack-cli ^ 2.1.2,所以是最新的。 在文档(https://webpack.js.org/concepts/mod
object Host "os.google.com" { import "windows" address = "linux.google.com" groups = ["linux"] } obj
每当我安装我的应用程序时,我都可以将数据库从 Assets 文件夹复制到 /data/data/packagename/databases/ .到此为止,应用程序工作得很好。 但 10 或 15 秒后
我在 cc 模式缓冲区中使用 hideshow.el 来折叠我不查看的文件部分。 如果能够在 XML 文档中做到这一点就好了。我使用 emacs 22.2.1 和内置的 sgml-mode 进行 xm
已结束。此问题不符合 Stack Overflow guidelines .它目前不接受答案。 我们不允许提出有关书籍、工具、软件库等方面的建议的问题。您可以编辑问题,以便用事实和引用来回答它。 关闭
根据java: public Scanner useDelimiter(String pattern) Sets this scanner's delimiting pattern to a patt
我读过一些关于 PRG 模式以及它如何防止用户重新提交表单的文章。比如this post有一张不错的图: 我能理解为什么在收到 2xx 后用户刷新页面时不会发生表单提交。但我仍然想知道: (1) 如果
看看下面的图片,您可能会清楚地看到这一点。 那么如何在带有其他一些 View 的简单屏幕中实现没有任何弹出/对话框/模式的微调器日期选择器? 我在整个网络上进行了谷歌搜索,但没有找到与之相关的任何合适
我不知道该怎么做,我一直遇到问题。 以下是代码: rows = int(input()) for i in range(1,rows): for j in range(1,i+1):
我想为重写创建一个正则表达式。 将所有请求重写为 index.php(不需要匹配),它不是以/api 开头,或者不是以('.html',或'.js'或'.css'或'.png'结束) 我的例子还是这样
MVC模式代表 Model-View-Controller(模型-视图-控制器) 模式 MVC模式用于应用程序的分层开发 Model(模型) - 模型代表一个存取数据的对象或 JAVA PO
我想为组织模式创建一个 RDF 模式世界。您可能知道,组织模式文档基于层次结构大纲,其中标题是主要的分组实体。 * March auxiliary :PROPERTIES: :HLEVEL: 1 :E
我正在编写一个可以从文件中读取 JSON 数据的软件。该文件包含“person”——一个值为对象数组的对象。我打算使用 JSON 模式验证库来验证内容,而不是自己编写代码。符合代表以下数据的 JSON
假设我有 4 张 table 人 公司 团体 和 账单 现在bills/persons和bills/companys和bills/groups之间是多对多的关系。 我看到了 4 种可能的 sql 模式
假设您有这样的文档: doc1: id:1 text: ... references: Journal1, 2013, pag 123 references: Journal2, 2014,
我有这个架构。它检查评论,目前工作正常。 var schema = { id: '', type: 'object', additionalProperties: false, pro
这可能很简单,但有人可以解释为什么以下模式匹配不明智吗?它说其他规则,例如1, 0, _ 永远不会匹配。 let matchTest(n : int) = let ran = new Rand
我有以下选择序列作为 XML 模式的一部分。理想情况下,我想要一个序列: 来自 my:namespace 的元素必须严格解析。 来自任何其他命名空间的元素,不包括 ##targetNamespace和
我希望编写一个 json 模式来涵盖这个(简化的)示例 { "errorMessage": "", "nbRunningQueries": 0, "isError": Fals
首先,我是 f# 的新手,所以也许答案很明显,但我没有看到。所以我有一些带有 id 和值的元组。我知道我正在寻找的 id,我想从我传入的三个元组中选择正确的元组。我打算用两个 match 语句来做到这
我是一名优秀的程序员,十分优秀!