小编tjm*_*gis的帖子

从Zip文件中读取CSV

我有一个zip文件目录(大约10,000个小文件),每个都是我试图读取的CSV文件并分成许多不同的CSV文件.

我设法编写代码以从CSV目录中拆分CSV文件,如下所示,它读取CSV的第一个属性,并根据它将其写入相关CSV.

import csv
import os
import sys
import re
import glob

reader = csv.reader(open("C:/Projects/test.csv", "rb"), delimiter=',', quotechar='"')
write10 = csv.writer(open('ouput10.csv', 'w'), delimiter=',', lineterminator='\n', quotechar='"', quoting=csv.QUOTE_NONNUMERIC)
write15 = csv.writer(open('ouput15.csv', 'w'), delimiter=',', lineterminator='\n', quotechar='"', quoting=csv.QUOTE_NONNUMERIC)


headings10=["RECORD_IDENTIFIER","CUSTODIAN_NAME","LOCAL_CUSTODIAN_NAME","PROCESS_DATE","VOLUME_NUMBER","ENTRY_DATE","TIME_STAMP","VERSION","FILE_TYPE"]
write10.writerow(headings10)

headings15=["RECORD_IDENTIFIER","CHANGE_TYPE","PRO_ORDER","USRN","STREET_DESCRIPTION","LOCALITY_NAME","TOWN_NAME","ADMINSTRATIVE_AREA","LANGUAGE"]
write15.writerow(headings15)


for row in reader:
    type = row[0]
    if "10" in type:        
        write10.writerow(row)
    elif "15" in type:
        write15.writerow(row)
Run Code Online (Sandbox Code Playgroud)

所以我现在正在尝试阅读Zip文件而不是浪费时间首先提取它们.

这是我在跟踪了尽可能多的教程之后到目前为止所做的

import glob
import os
import csv
import zipfile
import StringIO

for name in glob.glob('C:/Projects/abase/*.zip'):
    base = os.path.basename(name)
    filename = os.path.splitext(base)[0]


datadirectory = 'C:/Projects/abase/' …
Run Code Online (Sandbox Code Playgroud)

python csv zip

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

API 网关 HTTP API CORS

我正在使用新的 API Gateway HTTP,它可以在配置期间添加 CORS。因此,我已将 Access-Control-Allow-Origin 标头设置为 *.

但是,当我使用 Postman 发出请求时,我没有看到该标头,这导致我的 VueJS Axios 请求失败。

我之前使用了 Lambda 代理集成并在我的 Lambda 中执行了以下操作

"headers": { 
            "Access-Control-Allow-Origin": "*" 
        }
Run Code Online (Sandbox Code Playgroud)

然而,新的 HTTP API 似乎并没有实现 CORS。也许我错过了一些简单的东西。

--编辑--

所以我继续寻找答案,并看到了 Serverless 人员的一篇博客文章,他们设置了以下内容

It’ll ensure following headers:

Access-Control-Allow-Origin: *
Access-Control-Allow-Headers:

Content-Type, X-Amz-Date, Authorization, X-Api-Key, X-Amz-Security-Token, X-Amz-User-Agent
Access-Control-Allow-Methods:

OPTIONS, and all the methods defined in your routes (GET, POST, etc.)
Run Code Online (Sandbox Code Playgroud)

我已经尝试过这些并重新部署,但仍然只能获得标准标题

谢谢

api amazon-web-services cors aws-lambda

13
推荐指数
2
解决办法
2068
查看次数

电子杀死child_process.exec

我有一个电子应用程序,用于child_process.exec运行长时间运行的任务.当用户在这些任务期间退出应用程序时,我很难管理.

如果他们退出我的应用程序或点击关闭,子进程将继续运行直到完成,但电子应用程序窗口已关闭并退出.

有没有办法通知用户有进程仍在运行,何时完成然后关闭应用程序窗口?

我所拥有的main.js只是标准代码:

// Quit when all windows are closed.
app.on('window-all-closed', function() {
    // On OS X it is common for applications and their menu bar
    // to stay active until the user quits explicitly with Cmd + Q
    if (process.platform != 'darwin') {
        app.quit();
    }
});
Run Code Online (Sandbox Code Playgroud)

我应该在某处添加支票吗?

谢谢你的帮助

EDITED

我似乎无法获得它的PID,child_process直到它完成.这是我的child_process代码

var loader = child_process.exec(cmd, function(error, stdout, stderr) {
    console.log(loader.pid)
    if (error) {
        console.log(error.message);
    }
    console.log('Loaded: ', value);
});
Run Code Online (Sandbox Code Playgroud)

我应该尝试以不同的方式获得它吗?

node.js electron

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

Python看门狗窗口等到复制完成

我在Windows 2012服务器上使用Python监视程序模块来监视共享驱动器上出现的新文件.当看门狗注意到新文件时,它将启动数据库恢复过程.

但是,监视程序似乎会尝试在创建的第二个文件中恢复文件,而不是等到文件完成复制到共享驱动器.所以我将事件更改为on_modified但是有两个on_modified事件,一个是文件最初被复制时的事件,另一个是完成复制后的事件.

如何将两个on_modified事件处理为仅在复制到共享驱动器的文件完成时触发?

将多个文件同时复制到共享驱动器时会发生什么?

这是我的代码

import time
import subprocess
from watchdog.observers import Observer
from watchdog.events import FileSystemEventHandler

class NewFile(FileSystemEventHandler):
    def process(self, event):
        if event.is_directory:
            return

    if event.event_type == 'modified':            
        if getext(event.src_path) == 'gz':
            load_pgdump(event.src_path)

    def on_modified(self, event):
        self.process(event)

def getext(filename):
    "Get the file extension"
    file_ext = filename.split(".",1)[1]
    return file_ext

def load_pgdump(src_path):    
    restore = 'pg_restore command ' + src_path
    subprocess.call(restore, shell=True)

def main():
    event_handler = NewFile()
    observer = Observer()
    observer.schedule(event_handler, path='Y:\\', recursive=True)
    observer.start()

    try:
        while True:
            time.sleep(1)
    except KeyboardInterrupt:
        observer.stop() …
Run Code Online (Sandbox Code Playgroud)

python python-watchdog

9
推荐指数
2
解决办法
5042
查看次数

Python CSV模块 - 引号丢失

我有一个包含这样数据的CSV文件

15,"I",2,41301888,"BYRNESS RAW","","BYRNESS VILLAGE","NORTHUMBERLAND","ENG"
11,"I",3,41350101,2,2935,2,2008-01-09,1,8,0,2003-02-01,,2009-12-22,2003-02-11,377016.00,601912.00,377105.00,602354.00,10
Run Code Online (Sandbox Code Playgroud)

我正在读这个,然后将不同的行写入不同的CSV文件.

但是,在原始数据中,非数字字段周围有引号,因为其中一些字段在字段中包含逗号.

我无法保留报价.

我已经研究了很多并且发现了quoting=csv.QUOTE_NONNUMERIC现在这导致每个领域都有引号,我不知道为什么?

如果我尝试其中一个其他引用选项,如MINIMAL,我最终得到一个关于日期值的错误消息,2008-01-09,不是浮动.

我试图创建一个方言,在csv阅读器和编写器上添加引用,但我没有尝试过与原始数据完全匹配的结果.

任何人都有同样的问题,并找到了解决方案.

python csv double-quotes

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

Python CPU Count在一台Windows服务器上运行但在另一台服务器上运行?

我写的代码已经在Windows XP和Windows Server 2008 64位上运行.但是我刚刚启动了亚马逊Windows 64位实例,但代码失败了.

看起来很简单

import multiprocessing

processors = multiprocessing.cpu_count()
print processors
Run Code Online (Sandbox Code Playgroud)

我收到一个NotImplementedError,我不明白,文档对解释没有帮助.

我只是不明白为什么它可以在一台服务器上运行而不是在另一台服务器上运行相同的Python 2.7

其他人遇到这个问题/错误?

python cpu multiprocessing

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

wxpython动画gif作为初始屏幕

我正在努力获取动画的gif文件来作为wxPython应用程序的启动屏幕播放。

我已经使用超时选项成功地将PNG文件用于启动画面,效果很好,但是我想使用动画GIF。

因此,我开始使用wx.animate.GIFAnimationCtrl()来显示GIF文件,但是在播放的GIF文件后面可以看到我的应用程序,而我无法让GIF停止并消失。

ani = wx.animate.Animation("intro.gif")
ctrl = wx.animate.AnimationCtrl(self, -1, ani)
ctrl.SetUseWindowBackgroundColour()
ctrl.Play()
Run Code Online (Sandbox Code Playgroud)

然后,我尝试使用wx.Sleep(5),然后使用ctrl.Stop(),但这导致GIF甚至无法显示。

然后,我尝试使用AdvancedSplashScreen,它再次与PNG一起使用,但不显示动画GIF文件。

有没有人成功地使一个人上班,如果可以的话如何?

谢谢

python animation wxpython

5
推荐指数
0
解决办法
744
查看次数

线程中的subprocess.Popen

我有很多文件(超过4000个),我想同时加载到PostgreSQL中.我已将它们分成4个不同的文件列表,我想要一个线程迭代加载数据的每个列表.

我遇到的问题是我使用os.system来调用加载程序但这会阻止其他线程同时运行.如果我使用subprocess.Popen然后它们同时运行但是线程认为它们已经完成了execeuting,所以移动到我的脚本的下一部分.

我这样做是对的吗?或者是否有更好的方法从线程内调用子进程.

def thread1Load(self, thread1fileList):
    connectionstring = settings.connectionstring
    postgreshost = settings.postgreshost
    postgresdatabase = settings.postgresdatabase
    postgresport = settings.postgresport
    postgresusername = settings.postgresusername
    postgrespassword = settings.postgrespassword

    tablename = None
    encoding = None
    connection = psycopg2.connect(connectionstring)

    for filename in thread1fileList:
        load_cmd = #load command
        run = subprocess.Popen(load_cmd, shell=True)
    print "finished loading thread 1"


def thread2Load(self, thread2fileList):
    connectionstring = settings.connectionstring
    postgreshost = settings.postgreshost
    postgresdatabase = settings.postgresdatabase
    postgresport = settings.postgresport
    postgresusername = settings.postgresusername
    postgrespassword = settings.postgrespassword

    tablename = None

    connection = psycopg2.connect(connectionstring)
    for filename in …
Run Code Online (Sandbox Code Playgroud)

python multithreading subprocess

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