我正在尝试优化我目前使用的查询:
SELECT `puid`,
COUNT(DISTINCT `droid_v`) AS DROID,
COUNT(DISTINCT `sig_v`) AS sig,
SUM(NoExt) AS hits
FROM temp
GROUP BY `puid`
Run Code Online (Sandbox Code Playgroud)
我需要得到它只能算droid_v其中droid_V大于0是否有可能以调节这样的计数?目前,它将零值计为可数,我无法真正将零null值更改为值.
我不需要知道droid_V= 0的计数值,如果它的数字大于0,我只需要计算它.该数字将始终为0,1,2,3或4.
我试过了:
SELECT `puid`,
COUNT(DISTINCT CASE WHEN `droid_v` > 0 THEN 1 END) AS DROID,
COUNT(DISTINCT `sig_v`) AS sig,
SUM(`NoExt`) AS hits
FROM temp
GROUP BY `puid`
Run Code Online (Sandbox Code Playgroud)
但是这给出了二进制结果(0或1)而不是我期望的计数.
示例输出=
puid DROID sig hits
No PUID 1 1 252
x-fmt/92 1 5 1008
Run Code Online (Sandbox Code Playgroud)
预期产量:
puid DROID sig hits
No PUID 1 1 …Run Code Online (Sandbox Code Playgroud) 我有一些XML,我通过lxml在python中解析.
我遇到的情况是某些元素具有属性而某些元素没有属性.
我需要提取它们,如果它们存在,但如果它们不存在则跳过它们 - 我目前正在着陆时出错(因为我的方法是错误的......)
我已部署了testfornull,但在所有情况下都不起作用:
码:
if root[0][a][b].attrib == '<>':
ByteSeqReference = "NULL"
else:
ByteSeqReference = (attributes["Reference"])
Run Code Online (Sandbox Code Playgroud)
XML A:
<ByteSequence Reference="BOFoffset">
Run Code Online (Sandbox Code Playgroud)
XML B:
<ByteSequence Endianness = "little-endian" Reference="BOFoffset">
Run Code Online (Sandbox Code Playgroud)
XML C:
<ByteSequence Endianness = "little-endian">
Run Code Online (Sandbox Code Playgroud)
XML D:
<ByteSequence>
Run Code Online (Sandbox Code Playgroud)
我目前的方法只能处理A,B或D.它无法应付C.
我处理大量未知文件,并且一直在学习 python 来帮助我过滤/排序以及以其他方式处理这些文件。
我正在查看的集合有大量资源分叉,我编写了一个小脚本来查找它们并删除它们(下一步是找到它们并移动它们,但那是另一天的事了)。
我在这个集合中发现有许多文件的文件名中包含非 ascii 字符,这似乎导致 os.delete 函数失效。
示例文件名:._spec com report 395(注意,3 下面有一个小点,我找不到示例,或弄清楚如何显示文件名的十六进制...)
我记录了所有文件名,这就是该文件的日志记录:._spec com report 3?95
我得到的错误是 windowserror,因为它找不到该文件(它传递的字符串不是 Windows 操作系统所称的文件。)我放入了一个 try 子句以允许我对其进行处理,但是我真的很喜欢妥善处理它。
我还尝试在 walk 选项 `os.walk(u'.') 中使用 unicode 开关,按照这篇文章:Handling ascii char in python string (topanswer),我看到以下错误:
Traceback (most recent call last):
File "<stdin>", line 3, in <module>
File "c:\python27\lib\encodings\cp850.py", line 12, in encode
return codecs.charmap_encode(input,errors,encoding_map)
UnicodeEncodeError: 'charmap' codec can't encode character u'\uf022' in position
20: character maps to <undefined>
Run Code Online (Sandbox Code Playgroud)
所以我猜测答案在于如何解析文件名,并且想知道是否有人能够向我指出正确的方向......
代码:
import os
import sys
rootdir = "c:\target …Run Code Online (Sandbox Code Playgroud) 我刚在MYSQL数据库中发现了一堆流氓数据......
获取它的唯一方法是通过其中一个列 - FILE_PATH其中包含一个斜杠剥离版本的文件路径.我需要找到这个集合中的一些流氓文件 - 它们都有文件名"Thumbs.db",但它们有各种路径
例:
F:DatasetGroupedByFormatsx-FMT-398Thumbs.db
我在该字段上有一个全文索引,但以下查询不提供任何返回:
SELECT * FROM main_small WHERE MATCH `FILE_PATH` AGAINST ('Thumbs.db')
Run Code Online (Sandbox Code Playgroud)
响应:
MySQL returned an empty result set (i.e. zero rows). ( Query took 0.0382 sec )
Run Code Online (Sandbox Code Playgroud)
我不确定这是因为我的语法错误,还是文本字符串需要用空格/标点符号隔离.
我想创建一个脚本来获取文件,剥离文件的最后一个字节.该文件可以是任何文件,而不仅仅是文本.
我一直在使用seek()和tell()方法,但我找不到处理允许我这样做的文件的方法.
我认为它应该是相对微不足道的,但也许Python不适合这个?
fileStripped = file[:-4]
newpath = path + "\\" + fileStripped
if not os.path.exists(newpath):
os.makedirs(newpath)
with open(fname, "r") as f:
f.seek (0, 2) # Seek @ EOF
fsize = f.tell() # Get Size
f=f.read
f=f[:fsize-2]
Run Code Online (Sandbox Code Playgroud)
这个方法出错了,告诉我我不能下标这f=f[:fsize-2]行
根据昨天海报的精彩建议,我开始使用该shutil.copyfileobj方法制作文件的副本.
我的程序应该制作文件的精确副本,删除最后一个字节并保存新副本.
我昨晚用一些非常小的ASCII文本文件对它进行了测试,所以我可以检查它是否按照我的要求进行操作,今天早上我尝试了一些实际的"复杂"文件,PDF和JPG,看起来像副本功能不是真正的副本.我在十六进制编辑器中查看了生成的文件,我可以看到在偏移0x300之后有一些奇怪的事情 - 要么添加数据,要么在复制时更改数据.我不知道哪个.
我的程序迭代地取消一个字节并保存一个新版本,我可以看到新创建的文件始终与原始文件不同(除了最后一个字节)
def doNibbleAndSave(srcfile,fileStripped,strippedExt,newpath):
counter = '%(interationCounter)03d' % {"interationCounter":interationCounter} #creates the filename counter lable
destfile = newpath + "\\" + fileStripped + "_" + counter + strippedExt #creates the new filename
with open(srcfile, 'r') as fsrc:
with open(destfile, 'w+') as fdest:
shutil.copyfileobj(fsrc, fdest)
fdest.seek(nibbleSize, os.SEEK_END) #sets the number of bytes to be removed
fdest.truncate()
srcfile = destfile #makes the iterator pick up the newly 'nibbled' file to work on next
return (srcfile)
Run Code Online (Sandbox Code Playgroud)
我还可以看到新创建的对象明显小于源文件.
对于我第一次涉足python,我写了一些解析代码,它按照我的意图运行.
我想与其他一些外部人分享这段代码(因为它所执行的功能可能对他们有用),说实话,我对我的笨重和顶级编码感到羞耻...实际的工作部分代码很短,但我似乎花了大约70%的文件声明和重新声明变量....
我很确定这不是正确的做法,而且我不是要求某人逐行挑选我的编码,但是一些关于整理混乱的基本指针会很棒.
是的,todo是在推出它之前评论各个部分....
import re, os
def setGlobals():
###################### match returns
global sigVersionMatch
global filepathMatch
global statusMatch
global puidMatch
global mimeMatch
global status2Match
global warningMatch
global filenameMatch
global fileExtensionMatch
###################### Flags and counters
global lineCounter
global headerFlag
global newLine
###################### header variables
global headerLineOne
global headerLineTwo
global sigVersion
###################### searches as a variable
global SearchForStatus
global SearchForFilename
global SearchForFilepath
global SearchForPuid
global SearchForMime
global SearchForStatus2
global SearchForWarning
global SearchForFileExtension
####################### searchstring variables
global filepath
global status
global puid
global …Run Code Online (Sandbox Code Playgroud)