如何在文件中每一行的开头附加一个字符串
How to append a string in beginning of each line in file
我在 s3 上压缩了文件,我必须在其中添加字符串。我尝试了以下代码。但它不会将字符串附加到第一行。
s3_resource = boto3.resource('s3')
zip_obj = s3_resource.Object(bucket_name=bucket, key=obj_key)
buffer = BytesIO(zip_obj.get()["Body"].read())
try:
z = zipfile.ZipFile(buffer)
for filename in z.namelist():
file1 = z.read(filename).decode("utf-8")
file2 = (processed_dateTimeStr.join(z.read(filename).decode("utf-8").splitlines(True))).encode("utf-8")
object = s3_resource.Object(dest_bucket, f'{dest_fileName}')
object.put(Body=file2)
str.join
在作为参数给定的序列的所有元素之间插入常量字符串:
>>> '-'.join(['a', 'b', 'c'])
'a-b-c'
如果你想在第一个元素之前也有它,你可以简单地使用连接:
>>> '-' + '-'.join(['a', 'b', 'c'])
'-a-b-c'
...或者使用一个小技巧——在序列的开头插入一个空字符串:
>>> '-'.join(['', 'a', 'b', 'c'])
'-a-b-c'
在您的示例中,您可以使用列表拆包来坚持使用密集的单行样式:
file2 = (processed_dateTimeStr.join(["", *z.read(filename).decode("utf-8").splitlines(True)])).encode("utf-8")
我在 s3 上压缩了文件,我必须在其中添加字符串。我尝试了以下代码。但它不会将字符串附加到第一行。
s3_resource = boto3.resource('s3')
zip_obj = s3_resource.Object(bucket_name=bucket, key=obj_key)
buffer = BytesIO(zip_obj.get()["Body"].read())
try:
z = zipfile.ZipFile(buffer)
for filename in z.namelist():
file1 = z.read(filename).decode("utf-8")
file2 = (processed_dateTimeStr.join(z.read(filename).decode("utf-8").splitlines(True))).encode("utf-8")
object = s3_resource.Object(dest_bucket, f'{dest_fileName}')
object.put(Body=file2)
str.join
在作为参数给定的序列的所有元素之间插入常量字符串:
>>> '-'.join(['a', 'b', 'c'])
'a-b-c'
如果你想在第一个元素之前也有它,你可以简单地使用连接:
>>> '-' + '-'.join(['a', 'b', 'c'])
'-a-b-c'
...或者使用一个小技巧——在序列的开头插入一个空字符串:
>>> '-'.join(['', 'a', 'b', 'c'])
'-a-b-c'
在您的示例中,您可以使用列表拆包来坚持使用密集的单行样式:
file2 = (processed_dateTimeStr.join(["", *z.read(filename).decode("utf-8").splitlines(True)])).encode("utf-8")