天道酬勤,学无止境

使用命令行函数在python中复制日志(copying logs in python using the command line function)

问题

我对我的代码有疑问,我想我可以在这里验证。 我的要求是从两个不同的服务器复制 apache 日志和错误日志。 我用for循环写了一个python程序。

我的代码:

def copylogs(Appache,Errorlog, folder_prefix) :

    root_path = '/home/tza/Desktop/LOGS/'
    folders = ['Appache','Errorlog']
    for folder in folders:


      folder_name = folder_prefix + "_" + folder + str(int(time.time()))
      mkdircmd = "mkdir -p " + root_path + "/" + folder_name
      os.system(mkdircmd)

      filePath = root_path + folder_name
      serverPath = "/var/log/apache/*"

      cmd = "scp " + "symentic@60.62.1.164:" + serverPath + " " + filePath
      cmd = cmd.replace("60.62.1.164" ,myip1)
      cmd = os.system(cmd)
      print "Logs are at:",root_path+folder_name
      time.sleep(10)

      filePath = root_path +  folder
      serverPath = "/var/log/errorlog/*"

      cmd = "scp " + "symentic@10.95.21.129:" + serverPath + " " + filePath
      cmd = cmd.replace("10.95.21.129" ,myip2)
      cmd = os.system(cmd)
      print "Logs are at:",root_path+folder_name

现在我在程序结束时调用该函数:

folder_prefix = "Fail Case-1"
copylogs(Appache,Errorlog, folder_prefix)

我这里有问题。 程序成功执行,但日志被覆盖。我的意思是首先创建 Appache 文件夹,复制日志,然后再次被覆盖。

我需要的是:创建一个文件夹 Appachelogs[使用定义的时间戳],从机器 1 复制日志,然后从机器 2 复制错误日志,然后继续程序

如何做到这一点?

回答1

如果目标计算机中存在相同的文件名,scp 默认会覆盖。

我建议使用错误文件名 + 时间戳的组合来命名错误日志。 日志在名称中包含时间戳总是一个很好的约定,它们还可以防止您遇到的覆盖问题。

回答2

考虑使用rsync而不是scp

回答3

您的日志在两台机器上是否具有相同的文件名? 如果他们这样做, scp将覆盖它们。

我个人会有两个目录,每台机器一个。 或者使用 Sylar 在他的回答中建议的时间戳。

受限制的 HTML

  • 允许的HTML标签:<a href hreflang> <em> <strong> <cite> <blockquote cite> <code> <ul type> <ol start type> <li> <dl> <dt> <dd> <h2 id> <h3 id> <h4 id> <h5 id> <h6 id>
  • 自动断行和分段。
  • 网页和电子邮件地址自动转换为链接。

相关推荐
  • 人生苦短之我用Python篇(深浅拷贝、常用模块、内置函数)
    深浅拷贝有时候,尤其是当你在处理可变对象时,你可能想要复制一个对象,然后对其做出一些改变而不希望影响原来的对象。这就是Python的copy所发挥作用的地方。  定义了当对你的类的实例调用copy.copy()时所产生的行为。copy.copy()返回了你的对象的一个浅拷贝——这意味着,当实例本身是一个新实例时,它的所有数据都被引用了——例如,当一个对象本身被复制了,它的数据仍然是被引用的(因此,对于浅拷贝中数据的更改仍然可能导致数据在原始对象的中的改变)。  定义了当对你的类的实例调用copy.deepcopy()时所产生的行为。copy.deepcopy()返回了你的对象的一个深拷贝——对象和其数据都被拷贝了。memodict是对之前被拷贝的对象的一个缓存——这优化了拷贝过程并且阻止了对递归数据结构拷贝时的无限递归。当你想要进行对一个单独的属性进行深拷贝时,调用copy.deepcopy(),并以memodict为第一个参数。 思路一:利用切片操作和工厂方法list方法拷贝就叫浅拷贝,只是拷贝了最外围的对象本身,内部的元素都只是拷贝了一个引用而已。思路二:利用copy中的deepcopy方法进行拷贝就叫做深拷贝,外围和内部元素都进行了拷贝对象本身,而不是引用。但是对于数字,字符串和其他原子类型对象等,没有被拷贝的说法,即便是用深拷贝,查看id的话也是一样的,如果对其重新赋值
  • 我如何在 python 脚本中调用 robocopy 来批量复制多个文件夹?(How can i call robocopy within a python script to bulk copy multiple folders?)
    问题 我正在尝试在网络驱动器之间移动多个大文件夹(> 10 Gb,> 100 个子文件夹,> 2000 个文件)。 我曾尝试在 python 中使用shutil.copytree 命令,它工作正常,只是由于不同的原因它无法复制一小部分(< 1 % 的文件)。 我相信 robocopy 对我来说是最好的选择,因为我可以创建一个记录传输过程的日志文件。 但是,由于我需要复制 > 1000 个文件夹,因此手动工作是不可能的。 所以我的问题本质上是如何从 python 脚本中调用 robocopy(即命令行)以确保日志文件写入外部文件。 我在 Windows 7 环境中工作,由于组织限制,Linux/Unix 是不可能的。 如果有人有任何其他建议以非常灵活的方式批量复制这么多文件夹,欢迎他们。 回答1 子进程允许您进行系统调用。 这将允许您像从命令行一样调用 robocopy。 from subprocess import call call(["robocopy", "basefolder newfolder /S /LOG:mylogfile"]) 回答2 就像halfs13所说的使用子进程,但您可能需要像这样格式化它 from subprocess import call call(["robocopy",'fromdir', 'todir',"/S"])否则它可能会读取源作为一切
  • python中那些小众但有用的内置模块
    今天带来的是python里一些小众但是却比较实用的python库,一起来看看吧! pprint:更清晰的打印 pprint 是 pretty printer 的缩写,用来打印 Python 数据结构,与 print 相比,它打印出来的结构更加整齐,便于阅读。先来看看print 再来看看pprint,是不是打印出来更加方便阅读 shutil :高级文件操作 shutil 是 Python 中的高级文件操作模块首先导入相关库 然后创建一个test.file用于示例,执行完毕工作目录下就会多一个文件test.file 复制文件现在使用shutil.copy(src, dst)。 将源文件复制到目标地址: 复制文件夹使用os将文件转移到 test_dir 文件夹: 使用 shutil.copytree来复制文件夹: 删除非空文件夹使用shutil.rmtree 来删除非空文件夹: 移动文件夹shutil.move 可以整体移动文件夹,与 os.rename 功能差不多。压缩文件先看看支持的压缩文件格式: shutil.make_archive(basename, format, root_dir)可以用来压缩文件 logging :记录日志 打印日志还在用print()吗?logging 模块可以用来记录日志 logging 的日志类型有以下几种: logging.critical(msg
  • Python Canopy NumPy:按“播放”运行代码与在命令行中复制和粘贴代码的结果不同(Python Canopy NumPy: Running the code by pressing “Play” doesn't give the same result as copying and pasting the code in the command line)
    问题 我现在运行 Enthought Canopy 1.4.1 64 位一年了。 出于某种原因,我刚刚编写的代码在按下“播放”按钮时会生成完全不同的图表(使用 matplotlib),而不是将代码复制并粘贴到命令行中并按 Enter。 特别是,以下行会产生两种不同的结果: w1 = array(dot(matrix(C).I,R - 0.03)/sum(dot(matrix(C).I,R - 0.03)))[0] 当按下播放时,我得到: w1 Out[7]: array([ 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1.]) 当复制和粘贴完全相同的代码并按 Enter 时,我得到: w1 Out[9]: array([-0.53497564, 0.77325699, 0.3289724 , 0.2127899 , 0.29026341, 0.18743744, -0.24510907, -0.1117449 , -0.2534066 , 0.15694775, 0.19556833]) 我认为这就是我的图表混乱的原因,有谁知道为什么会这样? 回答1 在没有看到其余代码的情况下,最有可能的候选者是sum 。 在 vanilla python 中(就像你的脚本运行时一样), sum是 python 内置函数,它不知道 numpy 数组。 在
  • 使用单个文件进行Python日志记录(函数名,文件名,行号)(Python Logging (function name, file name, line number) using a single file)
    问题 我正在尝试学习应用程序的工作方式。 为此,我将调试命令作为每个函数主体的第一行插入,目的是记录该函数的名称以及将消息发送到日志输出的行号(在代码内)。 最后,由于此应用程序包含许多文件,因此我想创建一个日志文件,以便可以更好地了解应用程序的控制流程。 这是我所知道的: 为了获得函数名称,我可以使用function_name.__name__但是我不想使用function_name(这样我就可以在所有函数的主体中快速复制并粘贴通用Log.info("Message") )。 我知道这可以使用__func__宏在C中完成,但我不确定python。 为了获取文件名和行号,我已经看到(并且我相信)我的应用程序正在使用Python locals()函数,但是语法我并不完全了解,例如: options = "LOG.debug('%(flag)s : %(flag_get)s' % locals()) ,我尝试使用LOG.info("My message %s" % locals())进行尝试,生成的内容类似于{'self': <__main__.Class_name object at 0x22f8cd0>} 。 我知道如何使用日志记录并向其中添加处理程序以将其记录到文件中,但是我不确定是否可以使用单个文件来按项目中函数调用的正确顺序记录所有日志消息。 我将不胜感激任何帮助。 谢谢!
  • 管道 gsutil 输出到文件(Pipe gsutil output to file)
    问题 问候 StackOverflow, 我正在 Windows 上进行一个小项目,该项目需要读取 GSUTIL 的复制功能的输出。 问题是,复制功能的输出似乎无法通过标准输出工作。 此外,GSUTIL 的行为是不一致的:管道输出不适用于 copy 函数,但使用 list 函数确实有效。 当我在命令提示符中使用以下命令时,输出会显示在命令提示符中,但不会重定向到文本文件。 此命令无法正常工作: C:\gsutil> python gsutil cp "file://C:/test_files/*" gs://gs_teststore/ > gsutil_cp.txt 另一方面,当我使用列表函数( ls )时,输出确实通过标准输出工作,并在我希望的情况下工作: C:\gsutil> python gsutil ls gs://gs_teststore/ > gsutil_ls.txt 有没有办法从 GSUTIL 的复制功能中捕获输出? 回答1 您可以使用 -L 选项生成所有已复制文件的清单文件。 从文档: -L <file> 输出一个清单日志文件,其中包含有关复制的每个项目的详细信息。 此清单包含每个项目的以下信息: 源路径。 目的地路径。 源大小。 传输的字节数。 MD5 哈希。 UTC 日期和时间传输以 ISO 8601 格式开始。 UTC 日期和时间传输以 ISO 8601
  • Windows批处理文件的隐藏功能(Hidden features of Windows batch files)
    问题 已锁定。 该问题及其答案被锁定,因为该问题是题外话,但具有历史意义。 它目前不接受新的答案或互动。 Windows批处理文件中鲜为人知但又重要又有用的功能是什么? 指导原则: 每个答案一个功能给出功能的简短描述和示例,而不仅仅是文档的链接将答案限制为本机功能,即不需要其他软件,例如Windows资源工具包 澄清:我们在这里指的是cmd.exe处理的脚本,这是WinNT变体的默认设置。 (另请参阅:Windows批处理文件:.bat与.cmd?) 回答1 行继续: call C:\WINDOWS\system32\ntbackup.exe ^ backup ^ /V:yes ^ /R:no ^ /RS:no ^ /HC:off ^ /M normal ^ /L:s ^ @daily.bks ^ /F daily.bkf 回答2 PUSHD path 带您到path指定的目录。 POPD 带您回到“推送”的目录。 回答3 不确定这在批处理文件中有多大用处,但是在命令提示符下使用它是一个非常方便的命令: C:\some_directory> start . 这将在“ some_directory”文件夹中打开Windows资源管理器。 我发现这节省了很多时间。 回答4 我总是发现很难阅读每一行上由关键字标记的注释: REM blah blah blah 更容易阅读: :: blah
  • 在 Windows 上通过批处理安排 Python 脚本(使用 Anaconda)(Schedule a Python script via batch on windows (using Anaconda))
    问题 我有一个每天运行的脚本并想为其制定时间表,我已经尝试了一个批处理文件: start C:\Users\name\Miniconda3\python.exe C:\script.py 而且我能够在其中运行一些基本的 python 命令,问题是我的实际脚本使用了一些随 Anaconda 一起安装的库,我无法在脚本中使用它们,因为 Anaconda 不会加载。 我在 Windows 上工作,找不到启动 Anaconda 并每天在那里自动运行我的脚本的方法。 回答1 在直接通过环境调用 python 时,我会有点小心,因为人们永远不知道 activate 函数的内部结构是否发生了变化。 我只是使用基本的 bat 脚本来帮助我。 SET log_file=%cd%\logfile.txt call C:\Anaconda3\Scripts\activate.bat cd \script_directory python script.py arg1 arg2 > %log_file% 此脚本将日志文件保存在运行 bat 的任何位置,通过 activate(在本例中为标准)调用正确的环境,并将所有标准输出定向到日志文件中以进行进一步调查。 然后只需将您的 Windows 任务计划程序指向脚本并设置您希望日志文件出现的主目录。 回答2 我建议使用您需要的包创建一个 Anaconda 环境
  • python电子书在线阅读-Python编程快速上手 让繁琐工作自动化
    内容提要 作者简介 技术评审者简介 致谢 译者序 会编程的人不一样 前言 本书的读者对象 编码规范 什么是编程 什么是Python 程序员不需要知道太多数学 编程是创造性活动 本书简介 下载和安装Python 启动IDLE 交互式环境 如何寻求帮助 聪明地提出编程问题 小结 第一部分 Python编程基础 第1章 Python基础 1.1 在交互式环境中输入表达式 1.2 整型、浮点型和字符串数据类型 1.3 字符串连接和复制 1.4 在变量中保存值 1.4.1 赋值语句 1.4.2 变量名 1.5 第一个程序 1.6 程序剖析 1.6.1 注释 1.6.2 print()函数 1.6.3 input()函数 1.6.4 打印用户的名字 1.6.5 len()函数 1.6.6 str()、int()和float()函数 1.7 小结 1.8 习题 第2章 控制流 2.1 布尔值 2.2 比较操作符 2.3 布尔操作符 2.3.1 二元布尔操作符 2.3.2 not操作符 2.4 混合布尔和比较操作符 2.5 控制流的元素 2.5.1 条件 2.5.2 代码块 2.6 程序执行 2.7 控制流语句 2.7.1 if语句 2.7.2 else语句 2.7.3 elif语句 2.7.4 while循环语句 2.7.5 恼人的循环 2.7.6 break语句 2.7.7
  • 使用PyInstaller打包Python程序
    使用PyInstaller打包Python程序 2015-06-16 16:06 狂师 阅读(1453) 评论(0) 编辑 收藏 使用PyInstaller打包Python程序PyInstaller介绍:PyInstaller是一个能将Python程序转换成单个可执行文件的程序, 操作系统支持Windows, Linux, Mac OS X, Solaris和AIX。并且很多包都支持开箱即用,不依赖环境。环境为windows7操作系统,python2.7.8 virtual environment官网:https://github.com/pyinstaller/pyinstaller详细步骤:1. win7下面先安装这个依赖:pywin32,下载下来后切换到venv2.7,然后使用easy_install xxx.exe安装2. pip安装PyInstaller:1pip install pyinstaller3. 打包过程中可能会出现msvcp90.dll找不到的问题, 去http://cn.dll-files.com/msvcp90.dll.html下载第三个zip文件, 解压后放到C:\Windows\System32,如果是64位的还要放到C:\Windows\SysWOW64目录下。4. 再次运行报MSVCR90.dll找不到,同理去http://cn.dll
  • 如何忽略Python中的弃用警告(How to ignore deprecation warnings in Python)
    问题 我不断得到这个: DeprecationWarning: integer argument expected, got float 如何使此消息消失? 有没有一种方法可以避免Python中的警告? 回答1 从警告模块的文档中: #!/usr/bin/env python -W ignore::DeprecationWarning 如果您使用的是Windows,请通过-W ignore::DeprecationWarning作为Python的参数。 更好的方法是通过强制转换为int来解决问题。 (请注意,在Python 3.2中,默认情况下会忽略弃用警告。) 回答2 您应该只修复代码,以防万一, import warnings warnings.filterwarnings("ignore", category=DeprecationWarning) 回答3 我有这些: /home/eddyp/virtualenv/lib/python2.6/site-packages/Twisted-8.2.0-py2.6-linux-x86_64.egg/twisted/persisted/sob.py:12: DeprecationWarning: the md5 module is deprecated; use hashlib instead import os, md5, sys
  • 从应用程序代码内部使用Alembic API(Using Alembic API from inside application code)
    问题 我正在将SQLite用作基于PySide的桌面应用程序的应用程序文件格式(请参见此处,了解执行此操作的原因)。 也就是说,当用户使用我的应用程序时,其数据将保存在其计算机上的单个数据库文件中。 我正在使用SQLAlchemy ORM与数据库进行通信。 发布新版本的应用程序时,我可能会修改数据库架构。 我不希望用户每次更改架构时都必须丢弃数据,因此我需要将其数据库迁移到最新格式。 另外,我创建了很多临时数据库来保存数据的子集,以供某些外部进程使用。 我想用alembic创建这些数据库,以便用正确的版本标记它们。 我有几个问题: 有没有一种方法可以从我的Python代码中调用Alembic? 我认为必须在纯Python模块上使用Popen很奇怪,但是文档仅在命令行中使用alembic。 主要是,我需要将数据库位置更改为用户数据库所在的位置。 如果不可能,是否可以在不编辑.ini文件的情况下从命令行指定新的数据库位置? 这将使得通过Popen调用alembic没什么大不了的。 我看到alembic将其版本信息保存在一个名为alembic_version的简单表下,其中一列称为version_num而单行指定了版本。 创建新数据库时,可以在我的架构中添加alembic_version表并用最新版本填充该表,这样就没有开销了吗? 那是个好主意吗?
  • 将代码复制并粘贴到Python解释器中(Copying and pasting code into the Python interpreter)
    问题 我想复制一小段代码并将其粘贴到我的Python解释器中。 不幸的是,由于Python对空格的敏感度,以一种有意义的方式复制和粘贴它并不容易。 (我认为空格被弄乱了)是否有更好的方法? 也许我可以从文件中加载代码段。 这只是一个小例子,但是如果有很多代码,我想避免键入函数定义或逐行复制和粘贴中的所有内容。 class bcolors: HEADER = '\033[95m' OKBLUE = '\033[94m' OKGREEN = '\033[92m' WARNING = '\033[93m' FAIL = '\033[91m' ENDC = '\033[0m' def disable(self): self.HEADER = '' # I think stuff gets mangled because of the extra level of indentation self.OKBLUE = '' self.OKGREEN = '' self.WARNING = '' self.FAIL = '' self.ENDC = '' 回答1 您可以调用execfile(filename)。 除了跳过模块管理部分并且不需要您向sys.path添加文件夹之外,其余部分与导入模块大致相同。 编辑:解决原始问题:可以通过调用exec(codestring)执行粘贴粘贴的代码。
  • Python References: python标准库目录
    Python标准库 官方link: https://docs.python.org/zh-cn/3/library/index.html#library-index 目录 概述 可用性注释内置函数内置常量 由 site 模块添加的常量内置类型 逻辑值检测布尔运算 --- and, or, not比较数字类型 --- int, float, complex迭代器类型序列类型 --- list, tuple, range文本序列类型 --- str二进制序列类型 --- bytes, bytearray, memoryview集合类型 --- set, frozenset映射类型 --- dict上下文管理器类型Generic Alias Type其他内置类型特殊属性内置异常 基类具体异常警告异常层次结构文本处理服务 string --- 常见的字符串操作re --- 正则表达式操作difflib --- 计算差异的辅助工具textwrap --- 文本自动换行与填充unicodedata --- Unicode 数据库stringprep --- 因特网字符串预备readline --- GNU readline 接口rlcompleter --- GNU readline 的补全函数二进制数据服务 struct --- 将字节串解读为打包的二进制数据codecs ---
  • Python 不调用外部程序第 3 部分(Python not calling an external program part 3)
    问题 我在尝试从由 postgres 9.2 数据库中的触发器生成的 python 程序运行外部程序时遇到问题。 触发器工作。 它写入文件。 我曾尝试只运行外部程序,但权限不允许它运行。 我能够创建一个文件夹(使用 os.system(“mkdir”) )。 该文件夹的所有者是 NETWORK SERVICE。 我需要运行一个名为 sdktest 的程序。 当我尝试运行它时没有响应,所以我认为这意味着 python 程序没有足够的权限(具有 NETWORK SERVICE 的所有者)来运行它。 我一直在让我的程序将它需要的文件复制到该目录中,以便它们具有正确的权限,并且在某种程度上已经起作用,但是我需要运行的程序是最后一个并且它没有运行,因为它没有足够的权限。 我的 python 程序运行一个名为 PG_QB_Connector 的 C++ 程序,它调用 sdktest。 有什么方法可以将流程的所有者更改为“正常”所有者? 有一个更好的方法吗? 基本上我只需要让这个 C++ 程序有足够的权限来正确运行。 顺便说一句,当我手动运行 C++ 程序时,运行 sdktest 程序的行运行正常,但是,当我从 postgres/python 运行它时,它什么也没做...... 我有 Windows 7,python 3.2。 我问的其他 2 个问题位于此处和此处 蟒蛇程序: CREATE or
  • 如何抑制 Django 中的弃用警告?(How to suppress the deprecation warnings in Django?)
    问题 每次我使用django-admin命令时——即使是在 TAB 完成时——它都会抛出一个RemovedInDjango19Warning (如果我使用test命令, RemovedInDjango19Warning抛出更多)。 我怎样才能抑制这些警告? 我正在使用 Django 1.8 和 Python 3.4(在虚拟环境中)。 据我所知,所有这些警告都来自库而不是我的代码。 例子 这里有些例子: …/lib/python3.4/importlib/_bootstrap.py:321: RemovedInDjango19Warning: django.contrib.contenttypes.generic is deprecated and will be removed in Django 1.9. Its contents have been moved to the fields, forms, and admin submodules of django.contrib.contenttypes. return f(*args, **kwds) …/lib/python3.4/site-packages/django/contrib/admin/util.py:7: RemovedInDjango19Warning: The django.contrib.admin
  • Python编程快速上手让繁琐工作自动化中文高清完整版PDF带书签
    简介 如今,人们面临的大多数任务都可以通过编写计算机软件来完成。Python是一种解释型、面向对象、动态数据类型的高级程序设计语言。通过Python编程,我们能够解决现实生活中的很多任务。 本书是一本面向实践的Python编程实用指南。本书的目的,不仅是介绍Python语言的基础知识,而且还通过项目实践教会读者如何应用这些知识和技能。本书的首部分介绍了基本Python编程概念,第二部分介绍了一些不同的任务,通过编写Python程序,可以让计算机自动完成它们。第二部分的每一章都有一些项目程序,供读者学习。每章的末尾还提供了一些习题和深入的实践项目,帮助读者巩固所学的知识。附录部分提供了所有习题的解答。 本书适合任何想要通过Python学习编程的读者,尤其适合缺乏编程基础的初学者。通过阅读本书,读者将能利用强大的编程语言和工具,并且会体会到Python编程的快乐。 目录: 第一部分 Python编程基础 第1章 Python基础 3 1.1 在交互式环境中输入表达式 3 1.2 整型、浮点型和字符串数据类型 6 1.3 字符串连接和复制 6 1.4 在变量中保存值 7 1.4.1 赋值语句 7 1.4.2 变量名 9 1.5 第一个程序 9 1.6 程序剖析 11 1.6.1 注释 11 1.6.2 print()函数 11 1.6.3 input()函数 11 1.6.4
  • 《调教命令行05》对文件的基本操作
    原创:小姐姐味道(微信公众号ID:xjjdog),欢迎分享,转载请保留出处。任何不保留此声明的转载都是抄袭。最近xjjdog的状态很差。也许是春天到了,也许是万物相互有感应的结果,小王的状态也很差。是我影响了他,让他在这个虚拟的世界里不断的yy又不断的沉沦。在此,xjjdog向这个虚拟的小王说一声:对不起,是我没有赋予你一马平川的能力,让你演了5集像韩剧一样又臭又长的电视剧。但毕竟这种又臭又长是一种格调 ,小王决定认真的研究这个妹子,就如同他当年认真的研究Linux的命令一样。如果妹子是一张白纸,他会在上面书写什么呢?如果不是,他又能修改什么呢?但首先,他需要拿起笔。你可能已经了解到,ll -l命令的第一列,能够显示linux的文件类型。请对此有一个大体的印象,因为后面的很多命令,会用到这些知识。- 表示普通文件d 表示目录文件l 表示链接文件,比如快捷方式s 套接字文件c 字符设备文件,比如/dev/中的很多文件b 表示块设备文件,比如一些磁盘p 管道文件Linux上的文件可以没有后缀,而且可以创建一些违背直觉的文件。比如后缀是png,但它却是一个压缩文件(通常不会这么做)。大学时,就有聪明的同学这样藏小电影,效果很好。查看文件的具体类型,可以使用file命令,它很聪明,能够识别很多文件格式。[root@localhost ~]# file /etc/etc: directory
  • logging日志(Python版)
    logging日志 logging日志的介绍 在现实生活中,记录日志非常重要,比如:银行转账时会有转账记录;飞机飞行过程中,会有个黑盒子(飞行数据记录器)记录着飞机的飞行过程,那在咱们python程序中想要记录程序在运行时所产生的日志信息,怎么做呢? 可以使用 logging 这个包来完成 记录程序日志信息的目的是: 可以很方便的了解程序的运行情况 可以分析用户的操作行为、喜好等信息 方便开发人员检查bug 2. logging日志级别介绍 日志等级可以分为5个,从低到高分别是: DEBUG INFO WARNING ERROR CRITICAL 日志等级说明: DEBUG:程序调试bug时使用 INFO:程序正常运行时使用 WARNING:程序未按预期运行时使用,但并不是错误,如:用户登录密码错误 ERROR:程序出错误时使用,如:IO操作失败 CRITICAL:特别严重的问题,导致程序不能再继续运行时使用,如:磁盘空间为空,一般很少使用 默认的是WARNING等级,当在WARNING或WARNING之上等级的才记录日志信息。 日志等级从低到高的顺序是: DEBUG < INFO < WARNING < ERROR < CRITICAL 3. logging日志的使用 在 logging 包中记录日志的方式有两种: 输出到控制台 保存到日志文件 日志信息输出到控制台的示例代码
  • 如何使用Python创建的数据帧将数据写入Redshift?(How to write data to Redshift that is a result of a dataframe created in Python?)
    问题 我在Python中有一个数据框。 我可以将此数据作为新表写入Redshift吗? 我已经成功创建了到Redshift的数据库连接,并且能够执行简单的SQL查询。 现在,我需要为其编写一个数据框。 回答1 您可以使用to_sql将数据推送到Redshift数据库。 我已经能够通过SQLAlchemy引擎使用与数据库的连接来做到这一点。 只需确保在to_sql调用中将index = False设置index = False to_sql 。 如果该表不存在,则将创建该表,您可以指定是否要调用以替换该表,追加到该表或在该表已存在的情况下失败。 from sqlalchemy import create_engine import pandas as pd conn = create_engine('postgresql://username:password@yoururl.com:5439/yourdatabase') df = pd.DataFrame([{'A': 'foo', 'B': 'green', 'C': 11},{'A':'bar', 'B':'blue', 'C': 20}]) df.to_sql('your_table', conn, index=False, if_exists='replace') 请注意,您可能需要pip install