小编asd*_*dfg的帖子

如何使用python找到真正的用户主目录?

我看到如果我们更改HOME(linux)或USERPROFILE(windows)环境变量并运行python脚本,它会在我尝试时将新值作为用户主页返回,os.environ ['HOME'] os.exp

有没有办法找到真正的用户主目录而不依赖于环境变量?

编辑:
这是一种通过在注册表中阅读http://mail.python.org/pipermail/python-win32/2008-January/006677.html在Windows中查找userhome的方法

编辑:
使用pywin32查找windows的一种方法,

from win32com.shell import shell,shellcon
home = shell.SHGetFolderPath(0, shellcon.CSIDL_PROFILE, None, 0)
Run Code Online (Sandbox Code Playgroud)

python linux windows directory home-directory

69
推荐指数
5
解决办法
3万
查看次数

在python中,len(list)做什么?

len(list)每次调用时是否计算列表的长度,还是返回内置计数器的值?
我有一个上下文,我需要每次通过循环检查列表的长度,如:

listData = []
for value in ioread():
    if len(listData)>=25:
        processlistdata()
        clearlistdata()
    listData.append(value)
Run Code Online (Sandbox Code Playgroud)

我应该检查len(listData)每次迭代,还是应该有一个列表长度的计数器?

python list

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

如何避免程序的多个实例?

我需要找到一种正确的方法来阻止我的(Python)程序的两个运行实例.我目前正在使用以下方法.

在Windows上,

os.popen('wmic process get caption,processid | findstr `programname.exe`')
Run Code Online (Sandbox Code Playgroud)

在Linux上,

os.popen('ps x | grep `programname`')
Run Code Online (Sandbox Code Playgroud)

它似乎现在工作正常.这种方法是否正确?有人可以向我建议一个更好的方法吗?

编辑:感谢回复家伙,上述方法有什么问题吗?我尝试了linux的pid文件方式.如果pid文件以某种方式被删除怎么办?

python instance

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

Python:避免条件?

哪个更好?

if not var:
    var = get_var()
(要么)

var = var或get_var()

另外,我怎么知道两者中哪一个更好?
编辑:
史蒂夫的另一个选择,

var = var if var else get_var()
Run Code Online (Sandbox Code Playgroud)

python variable-assignment conditional-statements

5
推荐指数
2
解决办法
1068
查看次数

Python内存表

在python中使用直接查找行和列来形成内存表的正确方法是什么.
我想过以这种方式使用dicts的dict,

class Table(dict):
    def __getitem__(self, key):
        if key not in self:
             self[key]={}
        return dict.__getitem__(self, key)
table = Table()
table['row1']['column1'] = 'value11'
table['row1']['column2'] = 'value12'
table['row2']['column1'] = 'value21'
table['row2']['column2'] = 'value22'
>>>table
{'row1':{'column1':'value11','column2':'value12'},'row2':{'column1':'value21','column2':'value22'}}
Run Code Online (Sandbox Code Playgroud)

我很难在列中查找值.

>>>'row1' in table
True
>>>'value11' in table['row1'].values()
True
Run Code Online (Sandbox Code Playgroud)

现在我怎么也查找如果'column1''value11'
错形成表格的方式?
是否有更好的方法来实现这些表更容易查找?

python row

5
推荐指数
2
解决办法
3006
查看次数

我们怎么知道sqlite DB的锁状态?

1)是否有编译指示或任何方式来了解sqlite db 的当前锁定状态
2)另外,有没有办法知道是否有其他进程正在使用数据库?

sqlite locking

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

单个连接中的多个请求?

是否可以在不破坏连接的情况下使用python httplib来放置多个请求?比如,我可以将一个大文件部分上传到服务器,但是在一个套接字连接中.

我寻找答案.但似乎没有什么是如此清晰明确.

任何示例/相关链接都会有所帮助.谢谢.

python connection httplib

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

关于python GIL的一个问题

python GIL的存在是否意味着在python多线程中,相同的操作与在单个线程中重复它没有那么不同?

例如,如果我需要上传两个文件,那么在两个线程中执行它们的优势是什么,而不是一个接一个地上传它们?

我尝试了两种方式的大数学运算.但他们似乎花了几乎相同的时间来完成.

这似乎对我来说不清楚.有人可以帮我吗?谢谢.

python multithreading gil

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

python - 哪种启用/禁用日志记录的更好方法?

哪种方法可以更好地启用/禁用日志记录?

1)更改日志级别,

logging.disable(logging.CRITICAL)
Run Code Online (Sandbox Code Playgroud)

2)

log = None
Run Code Online (Sandbox Code Playgroud)

并以这种方式记录消息,

if log:
    log.info("log message")
Run Code Online (Sandbox Code Playgroud)

这样我们可以在禁用日志记录的情况下避免不必要的字符串构造...

python logging

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