小编Jay*_*Jay的帖子

MySQL - 带GROUP BY的条件COUNT

我正在尝试优化我目前使用的查询:

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)

mysql sql

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

如何测试某个XML中是否存在属性

我有一些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 xml lxml

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

在 Windows 环境中管理 Mac OS 创建的带有非 ASCII 字符的文件名?

我处理大量未知文件,并且一直在学习 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)

python unicode macos filenames

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

MySQL - 查找部分字符串 - 全文?

我刚在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)

我不确定这是因为我的语法错误,还是文本字符串需要用空格/标点符号隔离.

mysql full-text-search

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

Python - 从文件中剥离最后一个字节的最简单方法?

我想创建一个脚本来获取文件,剥离文件的最后一个字节.该文件可以是任何文件,而不仅仅是文本.

我一直在使用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]

python truncate file

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

Python - shutil似乎没有制作文件的真正二进制副本

根据昨天海报的精彩建议,我开始使用该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 copy shutil

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

Python - 编写更清晰(更好)的代码 - 不断声明和重新声明变量

对于我第一次涉足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)

python variables coding-style

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