CSV書込み lineterminator の指定でハマる

import csv
csv.register_dialect("MyDialect", quoting=csv.QUOTE_ALL, lineterminator='\n')

と書いて、

with open("sample.csv", "w", encoding="utf-8") as f:
   w = csv.writer(f, "MyDialect")
   w.writerow(header_list)
   w.writerows(array_list)

と書いて実行したら、行区切りが、\r\n のままで、どうして?と困惑した。。

書込み先 OPEN で、newline="" の指定が抜けてる。
付けると期待どおりの 、行区切りが、\n になる。

with open("sample.csv", "w", encoding="utf-8", newline="") as f:
   w = csv.writer(f, "MyDialect")
   w.writerow(header_list)
   w.writerows(array_list)

でも、これは Windows PC で実行した時の話であって、

with open("sample.csv", "w") as f:

で、Linux では open は、newline や encoding の指定を書かない
=================================
ダブルクォート全て付ける

cf = csv.writer(f, quoting=csv.QUOTE_ALL)

ダブルクォートを必要に応じてつける

cf = csv.writer(f, quoting=csv.QUOTE_MINIMAL)

非数値なら、ダブルクォートでくくる

cf = csv.writer(f, quoting=csv.QUOTE_NONNUMERIC)

クォート括りなし

cf = csv.writer(f, quoting=csv.QUOTE_NONE)

=====================
あまりCSVでシングルクォートで括るということはしないが、
もしも、指定するなら、csv.writer で、
quotechar='\''