小编PyN*_*bie的帖子

我应该使用Python或Assembly进行超快速复制程序

作为一个维护问题,我需要定期(每年3-5次)复制一个存储库,该存储库现在有超过2000万个文件,总磁盘空间超过1.5TB.我目前正在使用RICHCOPY,但已尝试过其他人.RICHCOPY似乎是最快的,但我不相信我接近我的XP机器能力的极限.

我正在使用我在汇编语言的艺术中读到的东西编写一个程序来复制我的文件.我的另一个想法是开始学习如何在Python中使用多线程来复制.

我正在四处寻找在大会中这样做的想法,因为它似乎很有趣,但是虽然我的时间并不是非常珍贵,但是我想要了解一下我是否会在复印速度上看到足够的增益.我假设我会,但我开始真正学习编程18个月,它仍然或多或少是一个爱好.因此,我可能会错过解释语言所发生的一些基本概念.

任何观察或经验将不胜感激.请注意,我不是在寻找任何代码.我已经在Python 2.6中编写了一个基本的复制程序,它不比RICHCOPY慢.我正在寻找一些能让我更快速的观察.现在,我花了50多个小时从磁盘复制到Drobo,然后从Drobo复制到磁盘.我有一个LogicCube,当我只是复制磁盘但有时我需要从磁盘转到Drobo或反过来.我想,鉴于我可以在七小时内使用LogicCube扇形复制一个3/4满2 TB的驱动器,我应该能够使用Assembly接近它,但我不知道这是否有效.(是的,有时无知是幸福)

我需要加速它的原因是我有两到三个周期,在复制过程中发生了一些事情(五十个小时是很长一段时间,期望世界保持不动),这导致我不得不丢弃副本并重新开始.例如,上周,水管在我们的建筑物下面断裂并缩短了电力.

感谢早期的回复,但我不认为这是I/O限制.我没有通过网络,驱动器插入我的母板与sata连接,我的Drobo插入Firewire端口,我的想法是两个连接应该允许更快的传输.

实际上我不能使用扇区副本,除了从单个磁盘到Drobo.由于Drobo文件结构很神秘,因此它无法正常工作.我不科学的观察是,从一个内部磁盘到另一个内部磁盘的副本并不比从Drobo到内部磁盘的副本快.

我受硬件约束,我买不起10K转2TB的驱动器(如果他们甚至制造它们).

你们中有很多人建议使用文件同步解决方案.但这并不能解决我的问题.首先,我玩的文件同步解决方案首先构建了一个地图(为了更好的术语),我有太多的小文件,所以他们窒息.我使用RICHCOPY的原因之一是它立即开始复制,它不使用内存来构建地图.其次,几周前我的三个Drobo备份中有一个失败了.我的规则是,如果我有备份失败,其他两个必须保持离线,直到新的建立.因此,我需要从我使用LogicCube的三个备份单驱动器副本中复制一个.

在一天结束时,我必须在一个驱动器上有一个好的副本,因为这是我交付给我的客户.因为我的客户有各种各样的系统,我在SATA驱动器上交付给他们.

我从某人那里租了一些云空间,我的数据也被存储为最深的备份,但如果离开那里则拉动它是很昂贵的.

python assembly

18
推荐指数
4
解决办法
3297
查看次数

如何在Python中使用unicode

我试图清除字符串中的所有HTML,因此最终输出是一个文本文件.我对各种"转换器"进行了一些研究,并开始倾向于为实体和符号创建自己的字典并在字符串上运行替换.我正在考虑这个因为我想自动化这个过程,底层html的质量有很多变化.为了开始比较我的解决方案的速度和例如pyparsing的替代方案之一,我决定使用字符串方法replace来测试替换\ xa0.我得到了

UnicodeDecodeError: 'ascii' codec can't decode byte 0xa0 in position 0: ordinal not in range(128)
Run Code Online (Sandbox Code Playgroud)

实际的代码行是

s=unicodestring.replace('\xa0','')
Run Code Online (Sandbox Code Playgroud)

无论如何 - 我决定我需要用r开头,所以我运行了这行代码:

s=unicodestring.replace(r'\xa0','')
Run Code Online (Sandbox Code Playgroud)

它运行没有错误,但是当我看到一片s时,我看到\ xaO仍在那里

python string unicode replace unicode-string

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

如果切片不创建列表副本也不创建list()如何获得列表的真实副本?

我正在尝试修改列表,因为我的修改有点棘手,我的列表很大,我使用以下代码获取了我的列表的一部分

tempList=origList[0:10]
for item in tempList:
    item[-1].insert(0 , item[1])
    del item[1]
Run Code Online (Sandbox Code Playgroud)

我这样认为对列表的所有修改都会影响tempList对象而不是origList对象.

好吧,一旦我的代码正确并在原始列表中运行它,前十个项目(索引0-9)受到我测试上面打印的代码的操作的影响.

所以我用Google搜索了一下,我找到了一些参考文献,说采取切片复制列表并创建一个新的.我还找到了帮助我找到项目ID的代码,所以我从头开始创建了我的origList,获得了前十项的ID.我再次对列表进行切片,发现切片中的id与origList的前十项中的id匹配.

我发现了更多的笔记,建议使用更复杂的方式来复制列表

tempList=list(origList([0:10])
Run Code Online (Sandbox Code Playgroud)

我试过了,我仍然发现tempList中的id与origList中的id匹配.

请不要建议更好的方法来进行编码 - 我将在列表中了解如何在我了解复制如何工作后自己理解

根据Kai的回答,正确的方法是:

import copy
tempList=copy.deepcopy(origList[0:10])
id(origList[0])
>>>>42980096
id(tempList[0])
>>>>42714136
Run Code Online (Sandbox Code Playgroud)

奇迹般有效

python copy list

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

解析html时为什么我需要item.text和item.text_content()其他人

还在学习lxml.我发现有时候我无法使用item.text从树中获取项目的文本.如果我使用item.text_content()我很高兴.我不确定我明白为什么.任何提示将不胜感激

好吧,我不确定如何在不让你处理文件的情况下提供一个例子:

这里是我编写的一些代码,试图弄清楚为什么我没有得到一些我期望的文本:

theTree=html.fromstring(open(notmatched[0]).read()) 
text=[]
text_content=[]
notText=[]
hasText=[]
for each in theTree.iter():
    if each.text:
        text.append(each.text)
        hasText.append(each)   # list of elements that has text each.text is true
    text_content.append(each.text_content()) #the text for all elements 
    if each not in hasText:
        notText.append(each)
Run Code Online (Sandbox Code Playgroud)

所以在我运行之后,我看一下

>>> len(notText)
3612
>>> notText[40]
<Element b at 26ab650>
>>> notText[40].text_content()
'(I.R.S. Employer'
>>> notText[40].text
Run Code Online (Sandbox Code Playgroud)

html python parsing lxml

10
推荐指数
2
解决办法
5081
查看次数

如何在Python中实现详细的REGEX

我试图在Python(2.7)中使用详细的正则表达式.如果重要的话,我只是想让它更容易回归,并在未来的某个时候更清楚地理解表达.因为我是新手,所以我首先创建了一个紧凑的表达式,以确保我得到了我想要的东西.

这是紧凑的表达式:

test_verbose_item_pattern = re.compile('\n{1}\b?I[tT][eE][mM]\s+\d{1,2}\.?\(?[a-e]?\)?.*[^0-9]\n{1}')
Run Code Online (Sandbox Code Playgroud)

它按预期工作

这是详细表达式

verbose_item_pattern = re.compile("""
\n{1}       #begin with a new line allow only one new line character
\b?       #allow for a word boundary the ? allows 0 or 1 word boundaries \nITEM or \n  ITEM
I        # the first word on the line must begin with a capital I
[tT][eE][mM]  #then we need one character from each of the three sets this allows for unknown case
\s+       # one or more white spaces this does …
Run Code Online (Sandbox Code Playgroud)

python regex

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

运行上传器脚本时的结果不同

我已经整理了一个将数据上传到S3的脚本.如果文件小于5MB,则将其作为一个块上传,但如果文件较大,则会进行分段上传.我知道阈值目前很小我只是在测试脚本的同时.如果我通过导入每个函数并以这种方式运行它来从Python运行脚本,那么一切都按预期工作.我知道代码需要清理,因为它尚未完成.但是,当我从命令行运行脚本时,我遇到了这个错误:

Traceback (most recent call last):
  File "upload_files_to_s3.py", line 106, in <module>
    main()
  File "upload_files_to_s3.py", line 103, in main
    check_if_mp_needed(conn, input_file, mb, bucket_name, sub_directory)
  File "upload_files_to_s3.py", line 71, in check_if_mp_needed
    multipart_upload(conn, input_file, mb, bucket_name, sub_directory)
  File "upload_files_to_s3.py", line 65, in multipart_upload
    mp.complete_upload()
  File "/usr/local/lib/python2.7/site-packages/boto/s3/multipart.py", line 304, in complete_upload
    self.id, xml)
  File "/usr/local/lib/python2.7/site-packages/boto/s3/bucket.py", line 1571, in complete_multipart_upload
    response.status, response.reason, body)
boto.exception.S3ResponseError: S3ResponseError: 400 Bad Request

>The XML you provided was not well-formed or did not validate against our published schema
Run Code Online (Sandbox Code Playgroud)

这是代码: …

python amazon-s3 boto

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

将包含长列表的熊猫df保存为csv文件

我正在尝试将熊猫数据框另存为.csv文件。目前,我的代码如下所示:

with open('File.csv', 'a') as f:
        df.to_csv(f, header=False)
Run Code Online (Sandbox Code Playgroud)

保存有效,但问题是我的数据框中的列表只是压缩为[first,second,...,last],而中间的所有条目都被丢弃了。如果仅查看原始数据框,则所有条目都在那里。有什么方法可以将列表转换为包含所有元素的字符串(str(df)也丢弃中间元素),或者如何将完整的numpy数组保存在csv表的单元格中?

谢谢您的帮助,薇薇安

python csv pandas

7
推荐指数
2
解决办法
2486
查看次数

如何使用BeautifulSoup从HTML"datacell"获取文本

我一直试图从HTML文件中删除一些数据.我有逻辑编码来获得正确的单元格.现在我正在努力获得'细胞'的实际内容:

这是我的htm剪辑

那么headerRows [0] [10] .contents

  [<font size="+0"><font face="serif" size="1"><b>Apples Produced</b><font size="3">       
  </font></font></font>]
Run Code Online (Sandbox Code Playgroud)

请注意,这是Python []中的列表项.

我需要Apples Produced的价值,但无法达到它.

任何建议,将不胜感激

关于解释这一点的好书的建议将获得我永恒的感激之情


谢谢你的回答.然而,没有更普遍的答案.如果我的单元格没有粗体属性会发生什么

说它是:

 [<font size="+0"><font face="serif" size="1"><I>Apples Produced</I><font size="3">       
  </font></font></font>]
Run Code Online (Sandbox Code Playgroud)

苹果生产

我正在努力学习阅读/理解文档,您的回复将有所帮助

我非常感谢这个帮助.关于这些答案的最好的事情是,从它们推广起来要容易得多,然后我就可以从BeautifulSoup文档中做到这一点.我学会了在Fortran时代进行编程,而我正在享受学习python并且对它的能力感到惊讶 - BeautifulSoup就是一个例子.制作一个cohernet整个文档对我来说很难.

干杯

html python parsing beautifulsoup

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

您如何恰当地重视为社区提供内容的开发人员的工作?

我一直致力于一个依赖于人们为开源社区做出贡献的应用程序.具体来说,我创建了一个整洁的应用程序,我认为这将帮助我留住客户并继续获得新客户,甚至可能给我一点定价权.该应用程序是用Python开发的,依赖于其他开发的两个模块.我已经计划在经济上承认PSF和这两位开发人员.我基本上打算付给他们我买得起的东西.当我在PSF网站上看到它基本上花了2000美元捐款升级为赞助商会员时,我感到宽慰.我决定我可以买得起2,000,但是一半会转到PSF而另一半会分配给我在我的应用程序中使用的两个最重要的模块的贡献者.

阅读其他人对这个问题的看法会很有趣.这样做的正确方法是什么,适当的金额是多少.我不会分享这些模块的名称,因为我认为我的贡献是他们的私营企业.

python open-source donations

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

有没有更好的方法使用键但没有值将列表转换为Python中的字典?

我确信会有一个单行将列表转换为字典,其中列表中的项目是键,字典没有值.

我发现做这件事的唯一方法是反对.

"当忽略结果时使用列表推导会产生误导和低效.for循环更好"

myList = ['a','b','c','d']
myDict = {}
x=[myDict.update({item:None}) for item in myList]

>>> myDict
{'a': None, 'c': None, 'b': None, 'd': None}
Run Code Online (Sandbox Code Playgroud)

它有效,但是有更好的方法吗?

python dictionary list-comprehension list

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