小编sar*_*jit的帖子

如果禁用记录器,则防止创建空日志文件

我正在使用日志记录模块使用以下代码在单独的日志文件中写入错误和调试消息。但是我希望只有在设置了特定的环境变量时才应该进行日志记录。在下面的代码中,我通过设置关闭了日志记录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)

python logging

4
推荐指数
1
解决办法
1102
查看次数

在pygobject中拖放文件示例

我正在尝试将示例拖放示例从 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 pygtk pygobject

4
推荐指数
1
解决办法
1559
查看次数

python tkinter与线程导致崩溃

我已经使用线程编写了一个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)

python tkinter

3
推荐指数
1
解决办法
5239
查看次数

Pythonic在另一个文件中使用类引用的方法

我有一种情况,我想在第二个文件中使用在一个文件中声明的类实例.作为一个小例子,请参阅以下代码:

我现在如何解决它?

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)

有没有更好的方法呢?

python

3
推荐指数
1
解决办法
315
查看次数

如何配置Tkinter列表框以禁用状态保持选中的项目突出显示

我在配置列表框小部件时遇到问题,即使在将其(以编程方式)设置为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 listbox tkinter

2
推荐指数
1
解决办法
4318
查看次数

使用 Python 比较文件时忽略行

我有两个要使用 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 Falsedifflib即使没有差异,也会打印所有行using whitespace

python

2
推荐指数
1
解决办法
2861
查看次数

Python正则表达式将所有字符与字符集匹配

我想使用一个字符集来匹配字符串中的所有字符,如果字符串中的任何字符都不匹配,则该字符不匹配。我正在使用字符集,并且希望字符串中的所有字符与字符集匹配。但是,如果存在其他任何字符,则可以通过。

我该如何解决?

>>> 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)

python regex

2
推荐指数
1
解决办法
432
查看次数

基于调用参数从python函数返回多个字典

我希望我的函数根据调用参数返回多个字典.例如,如果我调用没有参数的函数,它应该返回所有字典,如果我用一个参数列表调用它,它应该从函数返回相应的字典.显然,如果我没有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

1
推荐指数
1
解决办法
1905
查看次数

在Python中使用变量值作为字典/类名

我的要求是使用变量值来引用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.

python

0
推荐指数
1
解决办法
668
查看次数

python tarfile在创建tarball时忽略目录结构

我有一个直接结构:

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)

有人可以帮助我如何实现它.

python

0
推荐指数
1
解决办法
760
查看次数

标签 统计

python ×10

tkinter ×2

listbox ×1

logging ×1

pygobject ×1

pygtk ×1

regex ×1