我已经在使用基本日志记录配置,其中所有模块中的所有消息都存储在一个文件中.但是,我现在需要一个更复杂的解决方案:
我一直在阅读模块的文档,目前它们对我来说非常复杂.记录器,处理程序......
简而言之:
如何在Python 3中记录两个文件,即:
import logging
# ...
logging.file1.info('Write this to file 1')
logging.file2.info('Write this to file 2')
Run Code Online (Sandbox Code Playgroud) 这里有四条路径:
p1=r'\foo\bar\foobar.txt'
p2=r'\foo\bar\foo\foo\foobar.txt'
p3=r'\foo\bar\foo\foo2\foobar.txt'
p4=r'\foo2\bar\foo\foo\foobar.txt'
Run Code Online (Sandbox Code Playgroud)
目录可能存在也可能不存在于驱动器上.在每条路径中创建目录最优雅的方法是什么?
我正在考虑os.path.split()在循环中使用,并检查目录os.path.exists,但我不知道它有更好的方法.
我正在使用Text小部件,我有一个关于Tk使用的旧式快捷方式的问题.
即:
全选:Ctrl + /vs Ctrl + a
Cut:Ctrl + wvs Ctrl + x
Copy:Meta + wvs Ctrl + c
Paste:Ctrl + yvsCtrl + v
在Windows上,除Ctrl + a外,它们都可以工作.
1)是否可以重定向绑定,所以.bind('<Control-a>')调用已绑定Ctrl + /?
2)我试过"全选":
txt_text.bind('<Control-a>', self.ctext_selectall)
Run Code Online (Sandbox Code Playgroud)
哪里:
def ctext_selectall(self, callback):
"""Select all text in the text widget"""
self.txt_text.tag_add('sel', '1.0', 'end')
Run Code Online (Sandbox Code Playgroud)
但它不起作用,因为Ctrl + a默认工作(光标转到开始).它与其他一些未绑定的字母一起使用.如果不能解决1以下的解决方案,是否有机会使这项工作成功?
TextGrid是Praat程序使用的"分段"文件.我想编写一个解析器,然后验证数据.我的问题是:
你会如何为这种格式编写解析器?逐行阅读还是其他什么?这是一种已知的格式吗?
File type = "ooTextFile"
Object class = "TextGrid"
xmin = 0
xmax = 93.0538775510204
tiers? <exists>
size = 3
item []:
item [1]:
class = "IntervalTier"
name = "diph"
xmin = 0
xmax = 93.0538775510204
intervals: size = 65
intervals [1]:
xmin = 0
xmax = 1.300090702947846
text = ""
intervals [2]:
xmin = 1.300090702947846
xmax = 1.5300845864661654
text = "ey_s"
intervals [3]:
xmin = 1.5300845864661654
xmax = 3.4648692624493815
text = ""
Run Code Online (Sandbox Code Playgroud)
(然后重复到EOF,间隔为[4 .... n])
我正在绘制F1/F2元音图(这里有一个例子).每个元音都有几个点/值,我想在点周围绘制一个椭圆,这样:
我可能会让事情复杂化,但三角学和数学对我来说是希腊语.以下是我尝试过的.
Ellipsoidhull()
Ellipsoidhull()在包"cluster"中.如果我将具有F1和F2的矩阵传递给函数,它似乎计算椭圆的中心,但方向值很大.例如:
> olm
ol.f1 ol.f2 # f1/f2 data
[1,] 501.3 850.5
[2,] 488.5 906.5
[3,] 456.3 857.0
[4,] 505.8 895.3
[5,] 499.5 898.0
[6,] 431.8 891.5
[7,] 416.3 870.5
[8,] 506.0 887.8
[9,] 500.3 985.8
[10,] 513.5 955.3
[11,] 531.5 958.0
[12,] 483.0 847.3
[13,] 533.3 982.8
[14,] 480.8 881.8
[15,] 484.3 884.5
Run Code Online (Sandbox Code Playgroud)
如果传递给ellipsoidhull:
> ellipsoidhull(olm)
'ellipsoid' in 2 dimensions:
center = ( 480.69 904.33 ); squared ave.radius d^2 = …Run Code Online (Sandbox Code Playgroud) 为什么这不起作用,我做错了什么?
>>> p1 = r'\foo\bar.txt'
>>> os.path.join('foo1', 'foo2', os.path.normpath(p1))
'\\foo\\bar.txt'
Run Code Online (Sandbox Code Playgroud)
我期待这个:
'foo1\\foo2\\foo\\bar.txt'
Run Code Online (Sandbox Code Playgroud)
编辑:
>>> p1 = r'\foo\bar.txt'
>>> p1 = p1.strip('\\') # Strip '\\' so the path would not be absolute
>>> os.path.join('foo1', 'foo2', os.path.normpath(p1))
'foo1\\foo2\\foo\\bar.txt'
Run Code Online (Sandbox Code Playgroud) 这是一个示例:
> tmp
label value1 value2
1 aa_x_x xx xx
2 bc_x_x xx xx
3 aa_x_x xx xx
4 bc_x_x xx xx
Run Code Online (Sandbox Code Playgroud)
如何计算所有重复标签的中位数(或更多,其他数据框列中的相应值),但仅考虑前两个字母(即"aa_1_1"和"aa_s_3"是相同的值)?标签列表是有限且可用的.
我看了一下aggregate,%in%,subset和substr,但我无法编译任何有用而简单.
这是我希望得到的:
> tmp.result
label median1 some.calculation2
1 aa xx xx
2 bc xx xx
3 aa xx xx
4 bc xx xx
Run Code Online (Sandbox Code Playgroud)
非常感谢你.