小编Uli*_*ler的帖子

在Python中解压缩.bz2文件

所以,这是一个看似简单的问题,但我显然非常沉闷.我有一个小脚本从网页下载所有的.bz2文件,但由于某种原因,该文件的解压缩让我头疼.

我是一个Python新手,所以答案可能很明显,请帮助我.

在脚本的这一部分,我已经有了这个文件,我只是想把它读出来变量,然后解压缩?是对的吗?我已经尝试了各种方法来做到这一点,我通常在这个片段的最后一行得到"ValueError:找不到流的结尾"错误.我试图打开zipfile并以无数种方式将其写入字符串.这是最新的.

openZip = open(zipFile, "r")
s = ''
while True:
    newLine = openZip.readline()
    if(len(newLine)==0):
       break
    s+=newLine
    print s                   
    uncompressedData = bz2.decompress(s)
Run Code Online (Sandbox Code Playgroud)

嗨Alex,我应该列出我尝试过的所有其他方法,因为我尝试过read()方式.

方法A:

print 'decompressing ' + filename

fileHandle = open(zipFile)
uncompressedData = ''

while True:            
    s = fileHandle.read(1024)
    if not s:
        break
        print('RAW "%s"', s)
        uncompressedData += bz2.decompress(s)

        uncompressedData += bz2.flush()

        newFile = open(steamTF2mapdir + filename.split(".bz2")[0],"w")
        newFile.write(uncompressedData)
        newFile.close()   
Run Code Online (Sandbox Code Playgroud)

我收到错误:

uncompressedData += bz2.decompress(s)
ValueError: couldn't find end of stream
Run Code Online (Sandbox Code Playgroud)

方法B.

zipFile = steamTF2mapdir + filename
print 'decompressing ' …
Run Code Online (Sandbox Code Playgroud)

python compression

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

Fork和Execlp

我尝试使用fork和execlp的程序,其中父地址空间被"ls"命令替换.

#include<stdio.h>
main()
{
    int pid,j=10,fd;
    pid=fork();
    if(pid==0)
    {
        printf("\nI am the child\n");
        execlp("/bin/ls","ls",NULL);
        printf("\nStill I am the child\n");

    }
    else if (pid > 0)
    {
        printf("\n I am the parent\n");
        wait();
    } 
}
Run Code Online (Sandbox Code Playgroud)

当我执行程序时,最后一行的孩子

printf("\nStill I am the child\n");
Run Code Online (Sandbox Code Playgroud)

没有打印.为什么?

c linux fork exec

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

如何捕获Http.Conduit的simpleHttp抛出的404状态异常

我正在尝试下载html文件中包含的所有png文件.我很难捕获404状态异常,而我的程序只是崩溃了.

以下是一些示例:

import Network.HTTP.Conduit
import qualified Data.ByteString.Lazy as L

main = do
    let badUrl = "http://www.google.com/intl/en_com/images/srpr/WRONG.png"    
    imgData <- (simpleHttp badUrl) `catch` statusExceptionHandler  
    L.writeFile "my.png" imgData

statusExceptionHandler ::  t -> IO L.ByteString
statusExceptionHandler e = (putStrLn "oops") >> (return L.empty)
Run Code Online (Sandbox Code Playgroud)

我的"oops"消息从不打印,而是应用程序崩溃:

StatusCodeException(Status {statusCode = 404,statusMessage ="Not Found"})[("Content-Type","text/html; charset = UTF-8"),("X-Content-Type-Options","nosniff "),("日期","星期五,2012年1月27日03:10:34 GMT"),("服务器","sffe"),("内容长度","964"),("X-XSS -Protection","1; mode = block")]

我究竟做错了什么?

更新:

根据Thoma的建议,我将代码更改为以下代码段,现在已经适当地处理了异常处理.

main = do
    let badUrl = "http://www.google.com/intl/en_com/images/srpr/WRONG.png"    
    imgData <- (simpleHttp badUrl) `X.catch` statusExceptionHandler  
    case imgData of x | x == L.empty -> …
Run Code Online (Sandbox Code Playgroud)

haskell http-status-code-404 http-conduit

6
推荐指数
2
解决办法
1400
查看次数

子文件夹中的Python随机行

我在多个子文件夹中的.txt文件中有很多任务.我试图从这些文件夹,它们包含的文件以及文件中的文本行中随机选取总共10个任务.应删除或标记选定的行,以便在下次执行时不会选择它.这可能是一个太宽泛的问题,但我很欣赏任何意见或方向.

这是我到目前为止的代码:

#!/usr/bin/python  
import random   
with open('C:\\Tasks\\file.txt') as f:  
    lines = random.sample(f.readlines(),10)    
print(lines)
Run Code Online (Sandbox Code Playgroud)

python random-sample python-3.x

6
推荐指数
2
解决办法
1814
查看次数

使用async.waterfall减少嵌套但增加了混乱

我试图通过使用减少异步调用(node + socket.io)的嵌套,async.waterfall我最终不得不在瀑布中追加参数,因为以后需要它们.此代码可能更好地解释:

//原始版本:

 socket event: turn action
  socket.on('turn action', function(gameId, turnAction, clientFn) {
    socket.get('corp', function(err, corp) {
      gameProvider.processTurnAction(gameId, corp.id, turnAction, function(err, msg, game) {
        clientFn(msg, game);
      });
    });
  });
Run Code Online (Sandbox Code Playgroud)

// async.js版本

  async.waterfall([
    function(callback) {
      socket.on('turn action', function(gameId, turnAction, clientFn) {        
        callback(null, gameId, turnAction, clientFn);
      });
    },
    function(gameId, turnAction, clientFn, callback) {
      socket.get('corp', function(err, corp) {
        callback(null, gameId, turnAction, clientFn, corp);
      });
    },
    function(gameId, turnAction, clientFn, corp, callback) {
      gameProvider.processTurnAction(gameId, corp.id, turnAction, function(err, msg, game) {
        clientFn(msg,game);
      }); …
Run Code Online (Sandbox Code Playgroud)

node.js node-async

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

Haskell无法找到模块`Network.HTTP.Conduit'

我无法让这个导入在haskell中工作.

import Network.HTTP.Conduit
Run Code Online (Sandbox Code Playgroud)

当我尝试编译时,我收到以下错误:

$ ghc Play.hs

Play.hs:1:8:
    Could not find module `Network.HTTP.Conduit'
    Use -v to see a list of the files searched for.
Run Code Online (Sandbox Code Playgroud)

如果我尝试在GHCI中加载文件,则会发生同样的错误.

我已通过cabal安装了最新版本的http-conduit.这是cabal的输出:

$ cabal -list http-conduit
* http-conduit
    Synopsis: HTTP client package with conduit interface and HTTPS support.
    Default available version: 1.8.2
    Installed versions: 1.6.0.4, 1.8.2
    Homepage: http://www.yesodweb.com/book/http-conduit
    License:  BSD3

* http-conduit-browser
    Synopsis: Browser interface to the http-conduit package
    Default available version: 1.6.3
    Installed versions: 1.6.3
    Homepage: https://github.com/exbb2/http-conduit-browser
    License:  BSD3
Run Code Online (Sandbox Code Playgroud)

如果它可能有所作为,我使用的是Ubuntu 12.04.

任何想法为什么这不会导入?

编辑:'ghc-pkg list'的输出:

$ …
Run Code Online (Sandbox Code Playgroud)

https networking haskell http http-conduit

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

在Network.HTTP.Conduit中禁用SSL/TLS证书验证

我使用http-conduit库版本2.0+从http://URL 获取内容:

import Network.HTTP.Conduit
myurl = ... -- Your URL goes here
main = do content <- simpleHttp myurl
          print $ content
Run Code Online (Sandbox Code Playgroud)

运行此程序时,我收到此错误:

*** Exception: TlsException (HandshakeFailed (Error_Protocol
      ("certificate rejected: certificate is not allowed to sign another certificate",
        True,CertificateUnknown)))
Run Code Online (Sandbox Code Playgroud)

从错误消息中可以看出,问题是无法Network.HTTP.Conduit正确验证服务器证书(在这种情况下,证书链中似乎存在问题)

如何更改上面的代码以忽略证书错误(即根本不验证证书)?

ssl haskell conduit http-conduit

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

Cabal安装错误/ usr/bin/ld: - hash-size = 31:未知选项

尝试使用类似命令在我的计算机上安装任何软件包时

cabal install http-conduit
Run Code Online (Sandbox Code Playgroud)

安装中止,出现以下错误:

/usr/bin/ld: --hash-size=31: unknown option
Run Code Online (Sandbox Code Playgroud)

我该如何解决这个问题?

注意:这个问题故意不会显示研究工作,因为它是以问答方式立即回答的.

ld ghc binutils cabal gold-linker

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

将托盘图标分配给Google Chrome网络应用程序

我需要创建一个将存储在Windows托盘栏中的Web应用程序,以防止用户意外关闭我的应用程序(无需预先关闭警报消息).

我认为Google Chrome的后台应用程序可能是正确的方法,主要是因为我不需要跨浏览器兼容性,我必须选择用户将使用哪个浏览器来运行此Web应用程序.

唯一的问题是,我不明白我是否可以通过此功能实现我所需要的.

我在Chrome 倒计时应用程序中只发现了这个背景应用程序示例 但是这个应用程序使用了"背景页面"功能,这与我正在寻找的不同.

如何让Chrome应用在托盘栏中最小化(甚至在任务栏中也可以),而不是关闭?

google-chrome web-applications

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

使用warp收听特定主机

使用时运行warp应用程序时run,它会侦听所有IP地址.

出于安全原因,我localhost只想听,使用反向代理处理远程访问.

如何调用run仅侦听特定主机/ IP?

注意:这个问题故意没有研究,因为它回答了Q&A-Style.

haskell haskell-warp

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