- 博客(34)
- 收藏
- 关注
原创 Python删除GCS文件夹的问题
在Google Cloud Storage中,“文件夹"是一种虚拟的概念,通常通过blob的名称(包含斜杠”/“)来表示。因此,我们不能直接删除一个"文件夹”,但是我们可以删除所有名称以特定前缀(即"文件夹"的名称)开始的blob,从而达到删除"文件夹"的效果。会删除所有名称以"文件夹"的名称开始的blob。请注意,“文件夹"的名称应该以斜杠(”/")结束。在执行这个操作时,请确保你有足够的权限,
2023-09-27 13:25:28 191
原创 关于os.makedir(path, exist_ok=true)
如果path已经存在的话,不会覆盖既存的path,什么都不会做。如果path没有存在,会被创建;
2023-09-26 18:17:47 582
原创 使用BigQuery的Scheduled queries定期删除表
EXECUTE IMMEDIATE CONCAT可以执行一个拼接的合法字符串。①「Repeat frequency」的时间栏是UTC时间,注意和所在时区进行变换。不要填写,不要填写,否则会报错。3.在右侧会弹出「New schedule query」,按照个人需求,填写。需求:删除一个月之前的表。前提是表后缀是一个月之前的"年月日"。4.最后点击「save」,就会启动这个job。关于如何定期备份表,可以参考下面链接。我把定期删除表的方法整理一下,做个笔记。2.点击菜单栏的「Schedule」
2023-09-23 18:50:55 153
原创 使用BigQuery的Scheduled queries定期备份表
{run_date}是一个字符串,{run_time}是timestamp,按照我的需求,这里可以将tableid设定为table1_{run_time+9h|"%Y%m%d"}背景:由于业务原因,BigQuery的表每天都会被更新,所以想将过去一段时间的数据备份一下。①「Repeat frequency」的时间栏是UTC时间,注意和所在时区进行变换。可以进行格式上的变换,比如{run_time-24h|"%Y%m%d"}本来想通过GAS来实现,没想到BQ有自己的方法,我把方法整理一下,做个笔记。
2023-09-22 14:07:59 140
原创 python列表推导式,else后面的表达式到底给了谁?
表达式可以是非常简单的,例如一个数字或一个变量,也可以是更复杂的,例如一个函数调用或一个包含多个运算符的算术表达式。此处if...else主要起赋值作用,当data中的数据满足if条件时执行表达式1,否则执行表达式2,最后生成一个列表。这里就反映出表达式和语句的问题了,1是表达式,a=1是语句,这段代码其实是用3替换了1,所以赋值后,a就成了3。此处if主要起条件判断作用,data数据中只有满足if条件的才会被留下,最后生成一个列表。x/y是一个表达式,整体被x/4替换,结果变成1。这里,用3替换了a。
2023-04-14 21:06:31 432 2
原创 【杂谈】软件工程
软件工程是一门涉及到软件设计、开发、测试和维护等方面的综合学科。在现代社会,软件工程已成为不可或缺的一部分,它帮助我们开发高质量、可靠、安全和易维护的软件系统。以下是关于软件工程的一些关键概念和最佳实践。一、软件工程的定义和概念软件工程是一种使用工程化方法和原则来开发、维护和测试软件的过程。它包括一系列的活动和任务,如需求分析、软件设计、编码、测试、维护和文档化等。软件工程旨在提高软件系统的质量和可靠性,同时控制开发成本和时间。软件工程的核心原则包括模块化、抽象化、分层和封装等。
2023-04-14 12:27:24 401
原创 【python】dict的pythonic的写法
dict有key1, key2,key3,当key1, key2,key3的value都是OK的时候,赋值”OK"给变量resultdiv,否则赋值”NG"。还有个办法,要用到推导式。
2023-04-12 21:32:47 66
原创 【python】Iterator has already started.
还有就是一些操作上的问题了,比如使用pycharm的时候,设了个断点,把对象拿出来单独watch了一下,然后断点继续执行循环的时候,也是会出现上面所说的问题。因为你在不经意间调用了内置方法__iter__。有些时候,是因为代码处理有问题,先调用了内置方法__iter__,那么再取循环遍历的时候,就会出现Iterator has already started.这就需要检查代码了。
2023-04-12 10:24:51 87
原创 如何用python删除GCS文件夹下所有文件
对于GCS而言,文件夹和文件都属于Object,所以使用list_blobs,会取得该文件夹下的所有文件夹,和文件。这个时候,如果循环执行blob.delete()是会报错的,因为blob.delete()只能删除文件。如果是,则跳过该 Blob,因为它是一个文件夹。# 获取指定文件夹下的所有 Blob。来检查 Blob 的名称是否以。
2023-04-11 21:12:27 178
原创 【Bigquery】写一个SQL,以A列分组,只取每组的三条数据
函数为每个分组中的行分配行号。然后,它会从具有行号小于或等于3的每个分组中选择行。目标:先赚一个亿,啊不是,写一个SQL,以A列分组,只取每组的三条数据。函数和子查询来实现此操作。这个SQL语句会将输入表()按列A分组,并使用。其实也不仅限于BQ。
2023-04-11 13:16:38 566
原创 【GCP】blob.exists()和bucket.exists()
在使用这两个方法时,请确保您已经正确设置了GCS的身份验证凭据,并且输入了正确的Bucket名称和Blob名称。如果存在任何错误,这些方法可能会返回错误的结果,从而导致出现问题。方法都是Google Cloud Storage Python客户端库提供的方法,用于检查指定的Blob(文件)或Bucket是否存在。方法:此方法用于检查特定Bucket中的Blob(文件)是否存在。使用此方法之前,需要确保已经设置好GCS的身份验证凭据。方法:此方法用于检查指定的Bucket是否存在。如果Blob存在,则返回。
2023-04-10 21:05:34 234
原创 GCP的服务账户(Service Account)
但是我们在Python逻辑处理的时候,需要访问某个PJ的BigQuery的数据,但是A没有访问权限,管理员出于权限管理的考虑,给了你一个可以访问该BigQuery的Service Account,叫做B;其实在这种情况下,A只是负责CloudRun运行的,可视为从始至终的Service Account,只不过在处理Bigquery的时候,是需要配置的。定义一些Service Account,可以给不同的User或者不同的服务提供不同的Service Account,进行一些权限方面的管理。
2023-04-07 19:55:41 969
原创 bigquery取得件数判断
无论是什么数据库,select count(*) from table 之后,查询语句返回的结果总是包含一个行,即使结果为 0。函数获取结果集中的第一行,然后从该行中提取出件数。
2023-04-07 19:23:59 113
原创 【Python】使用列表推导式转换DF为Class.DF对象
现在有一个Class,里面有一个df, 我现在要把A的df按照列C分组,这样做的好处是,可以在A类里加一些针对DF的方法。最终结果的每个元素都转换成类的df对象。有些时候会比直接处理DF简单。
2023-04-04 20:11:20 356
原创 【Bigquery】IFNULL,NULLIF,SAFE_DIVIDE
该函数接受两个参数:numerator和denominator。如果denominator的值为0,则SAFE_DIVIDE函数返回NULL;否则返回numerator/denominator的值。IFNULL函数返回第一个参数,如果第一个参数为NULL,则返回第二个参数。Bigquery里有两个函数,IFNULL和NULLIF,差点搞混。NULLIF函数返回第一个参数,如果两个参数相同,则返回NULL。这些函数可以用于处理空值,以便在查询结果中使用默认值或其他值。
2023-03-28 19:20:24 583
原创 老生常谈,GET和POST
GET请求将请求参数编码在URL的查询字符串中发送,因此参数格式较为简单,只能传输简单类型数据。而POST请求将请求参数放置在请求体中,因此参数格式更加灵活,可以传输复杂类型数据。由于GET请求的参数会暴露在URL中,因此GET请求相对不安全,容易被攻击者窃取或篡改。而POST请求的参数被放置在请求体中,相对更安全,适合传输敏感信息。综上所述,GET请求适合用于获取资源,而POST请求适合用于提交表单数据等操作。POST请求没有长度限制,因为请求参数在请求体中,不受URL长度限制的影响。
2023-03-24 22:50:10 165
原创 kivy 播放任意时间的音乐文件【已解决】
self.sound.seek(int(5)) 和 self.sound.seek('5') 也是从 0 秒开始播放。想使用SoundLoader 的 seek() ,从任意时间开始播放音乐文件。self.sound.get_pos() 也总是返回 0 秒。的seek根本就是空的,没有实现。但是每次都是从 0 秒开始播放。目前在尝试其他方法。
2023-03-23 20:08:43 211
原创 pip install kivy 报错 subprocess-exited-with-error
不管你用的是什么IDE吧,执行下面这个命令就可以了。安装kivy时,报了下面的错。
2023-03-23 15:04:44 301
原创 如何登录数据到Bigquery
BQ有个很搞笑,很自作聪明的功能,如果表里没有数据,登录一条,或者CSV上传一条数据,它会根据你登的数据去更改表字段的类型,理解不了大公司的脑洞。在bigquery.LoadJobConfig有这么一个OPTION,自动探索的说,说啥呢,就是一开始讲的,会更改表字段的类型,我是不会用的。当然主要说的是IDE,习惯了SSMS,SQL Developer,突然用BQ,很不适应。不得不写SQL去增啥改数据,拿登录来说,大量的数据登录就很麻烦了。
2023-03-22 17:23:35 163
原创 Google Cloud Platform搭建一个小的Web API
4.CloudRun是不需要设定的,CloudBuild执行后,会生成一个名为${_BASE_NAME}的服务,但是有些时候需要一些特殊的设置,这里用到另一个文件:service.yaml,这个文件里可以进行一些范文权限的设置,还有Python用到的环境变量的设置。再往下是变量的设定,在Cloudbuild.yaml设定的时候,可能会处于对运行环境的考虑,有些设定成变量,会比较好管理,这种情况下可以考虑在这个画面上将变量设定进去。大体的步骤就是这些了,当然了,具体的还要看各自的权限和代码的设计。
2023-03-22 14:31:37 261
原创 Python的main函数
然而,在实际开发中,为了更好地组织代码和明确程序的入口,开发人员通常会定义一个 main() 函数,用于编写程序的主要逻辑,并在程序的顶层调用 main() 函数。这种做法可以使代码更加结构化,易于维护和阅读。然后,在 if __name__ == "__main__": 的条件语句中调用 main() 函数,使得程序从 main() 函数开始执行。因此,虽然在 Python 中不需要明确定义 main() 函数,但是定义一个 main() 函数是一个常见的做法,有助于提高代码的可读性和可维护性。
2023-03-21 21:20:35 4462
原创 .NET Framework 4.5升级到 .NET Framework 4.8.x
如果应用程序使用了特定于.NET Framework 4.8.1的功能或API,或者使用了.NET Framework 4.8.1中引入的新库或组件,则需要将应用程序更新到.NET Framework 4.8.1才能使用这些功能或API。总之,虽然.NET Framework 4.5和.NET Framework 4.8.1是部分兼容的,但在升级.NET Framework时需要进行评估和测试,以确保应用程序在新版本的.NET Framework上运行正常。2.更新现有应用程序。
2023-03-21 08:01:38 5751
原创 Python入门技
Python的模块是一种将相关函数和数据组织在一起的方式,可以方便地进行代码组织和复用。Python的列表是一种有序的可变容器,可以存储任意类型的数据。函数是Python编程中的重要概念,可以将重复使用的代码封装在函数中,提高代码的复用性。Python的函数可以设置默认参数,当函数调用时不传递该参数时,函数会使用默认值。Python的字符串是不可变的,因此在对字符串进行操作时需要使用一些字符串方法。这些技巧只是Python编程中的冰山一角,还有很多有趣的技巧等待你去探索和学习。10.模块的导入和使用。
2023-03-20 09:49:31 58
原创 【装饰器】让你的Python代码更Pythonic
我之前写的例子是用类级别的装饰器来处理静态方法的,因为静态方法不需要访问实例变量和实例方法,所以更适合用类级别的装饰器来装饰。当你使用这个装饰器时,它会跟着你的方法走,记录下每一步的日志。不仅如此,它还会在方法进入和退出时向你打个招呼,告诉你你的方法是如何被调用的。这个小伙伴可以帮你记录下每个方法的执行过程,让你知道你的程序在做什么,以及它是如何做到的。有些时候我们需要打印方法的执行日志,最简单的方法就是在方法的开始写一个。OK,我把静态方法和实例方法的装饰器重新整理一下。方法来支持对实例方法的装饰。
2023-03-19 14:06:11 71
原创 【杂谈】ChatGPT是否可以取代人类的工作
艺术家和作家可以根据自己的灵感和感受,创作出独一无二的作品,而这是我所不能做到的。此外,艺术和文学领域也需要对人类文化和历史有深刻的理解和认识,这也是我所没有的。接下来,让我们看看法律领域。此外,法律领域也需要对人类社会的历史、文化和价值观有深入的理解,这是我所没有的。此外,患者和医生之间的沟通和互动是非常重要的,而这正是我所不能提供的。同时,许多工作也需要人类的价值观、道德和伦理的考虑,这也是我所不能提供的。例如,算法的偏见、数据的不完整性和误导性、机器学习的样本问题等,这些都需要人类的干预和监管。
2023-03-18 21:53:06 4868
原创 Python面向对象编程(一)
面向对象编程(Object-Oriented Programming,OOP)可以理解为一种编程思想,就像你有一堆积木,你可以用这些积木来搭建不同的建筑物或者形状。在面向对象编程中,你可以把程序中的数据和操作数据的行为封装在一起,形成一个独立的对象,并对外提供简单的接口,隐藏内部的实现细节。我们可以把对象想象成一件物品,它有一些特征和行为。比如,一只狗有特征:体重、颜色、品种等,它还有一些行为:叫、跑、吃等。这些特征和行为可以看做是对象的属性和方法。类就像是一个模板,它定义了对象有哪些属性和方法。
2023-03-18 21:16:20 139
原创 AngularJS 日期转换
之前分享过一篇使用filter进行转换的小段子, 今天分享一篇直接用JS代码实现的转换。1,yyyyMm形式的字符串转DATE型 var year = yyyyMm.substring(0, 4); var month = yyyyMm.substring(4, 6); return new Date(year, month - 1, 1);2,DATE型转yyy
2016-04-26 10:30:48 1492
原创 AngularJS 日期转换字符串
日期转换成字符串的办法有很多种,其中最简单的方法是 使用AngularJS的filter来实现。$filter('date')(date, 'yyyyMM');$filter('date')(date, 'yyyyMM');$filter('date')(time, 'HH:mm');参照链接:http://js.studio-kingdom.com/angularjs/ng_filter/d
2016-04-26 08:47:06 4419
原创 VBAOracle表解锁
在项目开发过程中经常会遇到锁表的情况,解锁本身不是什么难事, 但是总有些人问来问去,所以就用VBA做了个工具, 无非就是用VBA把那几个关键的SQL文执行一下,这里把一些个人觉得有点价值的东西共享一下。1,因为要连接ORACLE,所以不在配置文件里面设置一下是不行的。 配置文件:tnsnames.ora, 比如说起个名字叫testAdm testAdm=(de
2016-04-22 13:15:03 298
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人