如果我调用os.urandom(64),我会得到64个随机字节.参考将字节转换为Python字符串,我尝试过
a = os.urandom(64)
a.decode()
a.decode("utf-8")
Run Code Online (Sandbox Code Playgroud)
但得到了回溯错误,说明字节不在utf-8中.
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
UnicodeDecodeError: 'utf-8' codec can't decode byte 0x8b in position 0: invalid start byte
Run Code Online (Sandbox Code Playgroud)
用字节
b'\x8bz\xaf$\xb6\x93q\xef\x94\x99$\x8c\x1eO\xeb\xed\x03O\xc6L%\xe70\xf9\xd8
\xa4\xac\x01\xe1\xb5\x0bM#\x19\xea+\x81\xdc\xcb\xed7O\xec\xf5\\}\x029\x122
\x8b\xbd\xa9\xca\xb2\x88\r+\x88\xf0\xeaE\x9c'
Run Code Online (Sandbox Code Playgroud)
是否有一种全面的方法将这些字节解码为一些字符串表示?我正在生成sudo随机令牌以跟踪多个数据库引擎中的相关文档.
我有一个25GB的文本文件.所以我把它压缩到tar.gz,它变成450 MB.现在我想从python中读取该文件并处理文本数据.对于这个我提到的问题.但在我的情况下代码不起作用.代码如下:
import tarfile
import numpy as np
tar = tarfile.open("filename.tar.gz", "r:gz")
for member in tar.getmembers():
f=tar.extractfile(member)
content = f.read()
Data = np.loadtxt(content)
Run Code Online (Sandbox Code Playgroud)
错误如下:
Traceback (most recent call last):
File "dataExtPlot.py", line 21, in <module>
content = f.read()
AttributeError: 'NoneType' object has no attribute 'read'
Run Code Online (Sandbox Code Playgroud)
还有,还有其他方法可以完成这项任务吗?
我在观察以下内容时试图统一文件中的行:
word1 word2
word1 word2
我不明白为什么这些行没有合并所以我在vim中打开文件并用来:set list查看是否有任何特殊字符,我发现了这个:
word1 <feff>word2
word1 word2
Run Code Online (Sandbox Code Playgroud)
我不确定如何在Python中清除这个单词.关于什么角色可能是什么以及如何清理它的任何建议?
我正在尝试使用pandas函数read_sas从SAS的.sas7bdat格式读取数据:
import pandas as pd
df = pd.read_sas('D:/input/houses.sas7bdat', format = 'sas7bdat')
df.head()
Run Code Online (Sandbox Code Playgroud)
我在df数据框中有两种数据类型 - float64和object.我对float64数据类型完全满意,所以我可以自由地将它转换为int,string等.问题是对象数据类型,我可以在df dataframe中看到这样包裹:
b'Text'
Run Code Online (Sandbox Code Playgroud)
或者像这样:
b'12345'
Run Code Online (Sandbox Code Playgroud)
代替
Text
Run Code Online (Sandbox Code Playgroud)
要么
12345
Run Code Online (Sandbox Code Playgroud)
我不能将它分别转换为字符串或int或"普通"对象数据类型.此外,我不能使用切片或替换技术来使用b''.所以我无法使用具有对象数据类型的列.请告诉我如何摆脱b''.
我不知道发生了什么,但是当我打印到控制台或文本文件时,换行符 (\n) 不起作用,而是显示在字符串中。知道如何在控制台和文本文件中避免这种情况吗?
我的代码:
import subprocess
hosts_file = open("hosts.txt","r")
lines = hosts_file.readlines()
for line in lines:
line = line.strip()
ping = subprocess.Popen(["ping", "-n", "3",line],stdout = subprocess.PIPE,stderr = subprocess.PIPE)
out, error = ping.communicate()
out = out.strip()
error = error.strip()
output = open("PingResults.txt",'a')
output.write(str(out))
output.write(str(error))
print(out)
print(error)
hosts_file.close()
Run Code Online (Sandbox Code Playgroud)
输出:
b'Pinging 192.168.0.1 with 32 bytes of data:\r\nRequest timed out.\r\nRequest ti
med out.\r\nRequest timed out.\r\n\r\nPing statistics for 192.168.0.1:\r\n Pa
ckets: Sent = 3, Received = 0, Lost = 3 (100% loss),'
b''
b'Pinging 192.168.0.2 …Run Code Online (Sandbox Code Playgroud) 所以我觉得我觉得这是一个非常愚蠢的问题.
我从文件创建一个数组:
A1=np.loadtxt(file, dtype='a100')
Run Code Online (Sandbox Code Playgroud)
我想在完成对另一个文件的处理之后编写该数组:
np.savetxt("Test.txt", A1, fmt=%s, delimiter=',')
Run Code Online (Sandbox Code Playgroud)
为什么写出来的?我想我明白它是把它写成字节,但对于我的生活,我无法弄清楚如何在没有b'的情况下写出来.
我知道这可能是我非常容易忽视的东西!
我收到这个错误:
\n\nUnicodeDecodeError: \'utf-8\' codec can\'t decode byte 0xff in position: 0, invalid start byte\nRun Code Online (Sandbox Code Playgroud)\n\n我找到了这个解决方案:
\n\n>>> b"abcde".decode("utf-8")\nRun Code Online (Sandbox Code Playgroud)\n\n从这里开始: \n将字节转换为 Python 字符串
\n\n但是,如果 a)您不\xe2\x80\x99 不知道 0xff 在哪里和/或 b)您需要解码文件对象,您如何使用它?正确的语法/格式是什么?
\n\n我正在解析一个目录,因此我尝试一次浏览一个文件。(注意:当项目变大时,这将不起作用!!!)
\n\n>>> i = "b\'0xff\'"\n>>> with open(\'firstfile\') as f:\n... g=f.readlines()\n... \n>>> i in g\nFalse\n>>> 0xff in g\nFalse\n>>> \'0xff\' in g\nFalse\n>>> b\'0xff\' in g\nFalse\n\n>>> with open(\'secondfile\') as f:\n<snip - same process>\n\n>>> with open(\'thirdfile\') as f:\n... g = f.readlines()\n... \nTraceback (most recent call last):\nFile "<stdin>", line 2, …Run Code Online (Sandbox Code Playgroud) 是否可以将字节连接到 str ?
>>> b = b'this is bytes'
>>> s = 'this is string'
>>> b + s
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: can't concat str to bytes
>>>
Run Code Online (Sandbox Code Playgroud)
基于上面的简单代码是不可能的。
我之所以问这个问题,是因为我看到了字节已连接到 str 的代码?这是代码的片段。
buf = ""
buf += "\xdb\xd1\xd9\x74\x24\xf4\x5a\x2b\xc9\xbd\x0e\x55\xbd"
buffer = "TRUN /.:/" + "A" * 2003 + "\xcd\x73\xa3\x77" + "\x90" * 16 + buf + "C" * (5060 - 2003 - 4 - 16 - len(buf))
Run Code Online (Sandbox Code Playgroud)
您可以在此处查看完整代码。
http://sh3llc0d3r.com/vulnserver-trun-command-buffer-overflow-exploit/
我需要将从 Python 调用的 PowerShell stdout 解码为 Python 字符串。
\n\n我的最终目标是以字符串列表的形式获取 Windows 上网络适配器的名称。我当前的函数如下所示,并且在使用英语的 Windows 10 上运行良好:
\n\ndef get_interfaces():\n ps = subprocess.Popen(['powershell', 'Get-NetAdapter', '|', 'select Name', '|', 'fl'], stdout = subprocess.PIPE)\n stdout, stdin = ps.communicate(timeout = 10)\n interfaces = []\n for i in stdout.split(b'\\r\\n'):\n if not i.strip():\n continue\n if i.find(b':')<0:\n continue\n name, value = [ j.strip() for j in i.split(b':') ]\n if name == b'Name':\n interfaces.append(value.decode('ascii')) # This fails for other users\n return interfaces\nRun Code Online (Sandbox Code Playgroud)\n\n其他用户使用不同的语言,因此value.decode('ascii')其中一些用户会失败。例如,一位用户报告说更改为decode('ISO 8859-2')对他来说效果很好(因此它不是 …
我正在使用 Python 3.6 并且我有一个字节图像:
img = b'\xff\xd8\xff\xe0\x00\x10JFIF\x00'
Run Code Online (Sandbox Code Playgroud)
我需要将字节转换为字符串而不进行编码,因此它看起来像:
raw_img = '\xff\xd8\xff\xe0\x00\x10JFIF\x00'
Run Code Online (Sandbox Code Playgroud)
目标是将其合并到 html 图像标签中:
<img src="'data:image/png;base64," + base64.b64encode(raw_img) + "' />"
Run Code Online (Sandbox Code Playgroud)