我正在使用日志记录模块使用以下代码在单独的日志文件中写入错误和调试消息。但是我希望只有在设置了特定的环境变量时才应该进行日志记录。在下面的代码中,我通过设置关闭了日志记录logger.disabled=True。但是,我观察到当我的应用程序完成执行时,会出现空日志文件。我在设置logger.disabled=True语句之后添加了一个检查以删除这些文件,但它说文件不存在。这些文件是什么时候生成的——在脚本执行结束时,即使记录器被禁用,是否可以防止写入空文件?
class LevelFilter(logging.Filter):
def __init__(self, level):
self.level = level
def filter(self, record):
return record.levelno == self.level
logger = logging.getLogger("exceptionsLogger")
debugLogFileHandler = logging.FileHandler("Debug.log", mode='w')
errorLogFileHandler = logging.FileHandler("Error.Log", mode='w')
formatter = logging.Formatter('%(message)s')
errorLogFileHandler.setFormatter(formatter)
debugLogFileHandler.setFormatter(formatter)
logger.addHandler(debugLogFileHandler)
logger.addHandler(errorLogFileHandler)
debugLogFileHandler.addFilter(LevelFilter(logging.DEBUG))
errorLogFileHandler.addFilter(LevelFilter(logging.ERROR))
logger.setLevel(logging.DEBUG)
logger.disabled = True
Run Code Online (Sandbox Code Playgroud) 我正在尝试将示例拖放示例从 pygtk FAQ 移植到 pygobject。
from gi.repository import Gtk as gtk
import urllib
import os
TARGET_TYPE_URI_LIST = 80
dnd_list = [ ( 'text/uri-list', 0, TARGET_TYPE_URI_LIST ) ]
def get_file_path_from_dnd_dropped_uri(uri):
# get the path to file
path = ""
if uri.startswith('file:\\\\\\'): # windows
path = uri[8:] # 8 is len('file:///')
elif uri.startswith('file://'): # nautilus, rox
path = uri[7:] # 7 is len('file://')
elif uri.startswith('file:'): # xffm
path = uri[5:] # 5 is len('file:')
path = urllib.url2pathname(path) # escape special chars
path …Run Code Online (Sandbox Code Playgroud) 我已经使用线程编写了一个python tkinter代码,以便tkinter向导通过在主线程中运行的tkinter mainloop和在单独线程中运行的后台进程自动更新.但是我注意到,运行代码后python崩溃了一段时间.此外它本质上是随机的,但python在大多数时间都会崩溃.我写了一个小的测试代码,可以显示这个问题(我的原始代码与此类似,但有一些真正的进程和许多其他功能,所以我分享测试代码).
######################################################################
# Test Code for Tkinter with threads
import Tkinter
import threading
import Queue
import time
# Data Generator which will generate Data
def GenerateData(q):
for i in range(1000000):
#print "Generating Some Data, Iteration %s" %(i)
time.sleep(0.01)
q.put("Some Data from iteration %s. Putting this data in the queue for testing" %(i))
# Queue which will be used for storing Data
q = Queue.Queue()
def QueueHandler(widinst, q):
linecount = 0
while True:
print "Running"
if not q.empty():
str …Run Code Online (Sandbox Code Playgroud) 我有一种情况,我想在第二个文件中使用在一个文件中声明的类实例.作为一个小例子,请参阅以下代码:
我现在如何解决它?
File2(待执行):
# Prog2:
from prog1 import *
cls1.dict["name"] = "John"
Run Code Online (Sandbox Code Playgroud)
文件1
# Prog1:
class Myclass(object):
def __init__(self):
self.dict = {}
cls1 = Myclass()
import prog2
print cls1.dict["name"]
Run Code Online (Sandbox Code Playgroud)
有没有更好的方法呢?
我在配置列表框小部件时遇到问题,即使在将其(以编程方式)设置为DISABLED状态时,选择仍保持突出显示.下面的代码显示了问题:
from Tkinter import *
master = Tk()
listbox = Listbox(master)
listbox.pack()
listbox.insert(END, "Text1")
listbox.insert(END, "Text2")
listbox.insert(END, "Text3")
listbox.selection_set(first=0, last=None)
listbox.configure(exportselection=False)
listbox.configure(state=DISABLED)
Run Code Online (Sandbox Code Playgroud)
现在,当我将状态更改为时NORMAL,正在突出显示所选项目.有没有办法可以禁用小部件(即鼠标点击没有响应),但保持所选对象保持突出显示?
意图:我想在我正在创建的向导App上使用这个小部件.我希望这个小部件指示用户选择的当前页面/向导编号.我可以使用其他任何小部件而不是它吗?(标签可能吗?)
我有两个要使用 Python 进行比较的文本文件。这两个文件的标题中都有 Date 。所以,我想在比较时忽略这条线,因为它总是会有所不同,不应被视为差异。
文件 1
Date : 04/29/2013
Some Text
More Text
....
Run Code Online (Sandbox Code Playgroud)
文件 2
Date : 04/28/2013
Some Text
More Text
....
Run Code Online (Sandbox Code Playgroud)
我尝试使用filecmp模块比较它们,但这不支持任何参数来忽略任何模式。是否有任何其他模块可用于此目的。我尝试使用difflib但没有成功。此外,我只想知道黑白文件是否存在差异True or False,difflib即使没有差异,也会打印所有行using whitespace。
我想使用一个字符集来匹配字符串中的所有字符,如果字符串中的任何字符都不匹配,则该字符不匹配。我正在使用字符集,并且希望字符串中的所有字符与字符集匹配。但是,如果存在其他任何字符,则可以通过。
我该如何解决?
>>> re.search(r'[a-z]*','abcA')
<_sre.SRE_Match object at 0x026DBBB8> ===> Should FAIL
>>> re.search(r'[a-z]*','abc')
<_sre.SRE_Match object at 0x026DBBF0>
Run Code Online (Sandbox Code Playgroud) 我希望我的函数根据调用参数返回多个字典.例如,如果我调用没有参数的函数,它应该返回所有字典,如果我用一个参数列表调用它,它应该从函数返回相应的字典.显然,如果我没有args或一个arg调用,它工作正常,但我有使用多个值的问题.以下示例显示了此问题.
def mydef(arg1=None):
a = {'a1':1, 'a2':2}
b = {'b1':1, 'b2':2}
c = {'c1':1, 'c2':2}
d = {'d1':1, 'd2':2}
if arg1 is None:
return a,b,c,d
else:
for x in arg1:
if x == 'a':
return a
elif x == 'b':
return b
w,x,y,z = mydef()
print type(w)
print w
s,t = mydef(['a', 'b'])
print type(s)
print s
print type(t)
print t
Run Code Online (Sandbox Code Playgroud)
怀疑:返回列表而不是dicts:
def mydef(args=None):
dicts = { 'a' :{'a1' : 1, 'a2' :2}, 'b' : {'b1' : 1, 'b2' :2}} …Run Code Online (Sandbox Code Playgroud) 我的要求是使用变量值来引用Python中的类/字典.作为示例,我有以下数据: -
class test1:
pass
class test2:
pass
test1_dict = {}
test2_dict = {}
testvariable = "test1"
Run Code Online (Sandbox Code Playgroud)
现在我想检查值testvariable并创建一个类的实例并将其附加到字典中.
例如
if testvariable == "test1":
test1inst = test1()
test1_dict["test1"] = test1inst
elif testvariable == "test2":
test2inst = test2()
test2_dict["test2"] = test2inst
Run Code Online (Sandbox Code Playgroud)
在上面的代码中,我必须明确地使用if/else来检查值testvariable并相应地执行操作.
在我的真实场景中,我可以有多个值,testvariable并且可能有多个if/else需要检查的地方.那么,有可能以某种方式,我可以使用testvariable直接的值来引用字典/类实例而不使用if/else.
我有一个直接结构:
D:\testfolder\folder_to_tar:
|---folder1
|--- file1.txt
|---folder2
|--- file2.txt
|---file3.txt
Run Code Online (Sandbox Code Playgroud)
我想在相同的目录级别使用Python创建一个tarball.但是,我观察到tarball python中包含父目录,即testfolder在我的示例中.
Expected Output :
D:\testfolder:
|---folder_to_tar.tar
|---folder_to_tar
|--folder1
.....
Actual Output :
D:\testfolder:
|---folder_to_tar.tar
|---testfolder
|---folder_to_tar
|--folder1
.....
Run Code Online (Sandbox Code Playgroud)
代码:
import tarfile
tarname = "D:\\testfolder\\folder_to_tar"
tarfile1 = "D:\\testfolder\\folder_to_tar.tar"
tarout = tarfile.open(tarfile1,mode="w")
try:
tarout.add(tarname,arcname=tarname)
finally:
tarout.close()
Run Code Online (Sandbox Code Playgroud)
有人可以帮助我如何实现它.