Skip to content

Commit 4f783dd

Browse files
committed
Fix \r\n line terminator for wr.s3.to_csv() #415
1 parent 78d5239 commit 4f783dd

File tree

2 files changed

+11
-2
lines changed

2 files changed

+11
-2
lines changed

awswrangler/s3/_write_text.py

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -37,15 +37,14 @@ def _to_text(
3737
else:
3838
raise RuntimeError("path and path_root received at the same time.")
3939
encoding: Optional[str] = pandas_kwargs.get("encoding", None)
40-
newline: Optional[str] = pandas_kwargs.get("line_terminator", None)
4140
with open_s3_object(
4241
path=file_path,
4342
mode="w",
4443
use_threads=use_threads,
4544
s3_additional_kwargs=s3_additional_kwargs,
4645
boto3_session=boto3_session,
4746
encoding=encoding,
48-
newline=newline,
47+
newline=None,
4948
) as f:
5049
_logger.debug("pandas_kwargs: %s", pandas_kwargs)
5150
if file_format == "csv":

tests/test_s3_text.py

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -263,3 +263,13 @@ def test_csv_additional_kwargs(path, kms_key_id, s3_additional_kwargs, use_threa
263263
assert desc.get("ServerSideEncryption") == "aws:kms"
264264
elif s3_additional_kwargs["ServerSideEncryption"] == "AES256":
265265
assert desc.get("ServerSideEncryption") == "AES256"
266+
267+
268+
@pytest.mark.parametrize("line_terminator", ["\n", "\r", "\n\r"])
269+
def test_csv_line_terminator(path, line_terminator):
270+
file_path = f"{path}0.csv"
271+
df = pd.DataFrame(data={"reading": ["col1", "col2"], "timestamp": [1601379427618, 1601379427625], "value": [1, 2]})
272+
wr.s3.to_csv(df=df, path=file_path, index=False, line_terminator=line_terminator)
273+
wr.s3.wait_objects_exist(paths=[file_path])
274+
df2 = wr.s3.read_csv(file_path)
275+
assert df.equals(df2)

0 commit comments

Comments
 (0)